복붙노트

[SPRING] TLD "META-INF / c.tld"를 읽을 수 없습니다.

SPRING

TLD "META-INF / c.tld"를 읽을 수 없습니다.

JSTL에이 문제가 있습니다. 나는 지난 며칠 동안 붙어 있습니다. 어떤 도움을 주셔서 감사합니다.

Tomcat 6.0.28 Eclipse : Helios

Pom.hml :

 <dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>jstl</artifactId>
   <version>1.1.2</version>
 </dependency>
 <dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.4</version>
  <scope>provided</scope>
</dependency>
<dependency>   
  <groupId>taglibs</groupId> 
  <artifactId>standard</artifactId> 
  <version>1.1.2</version> 
</dependency>
<dependency>   
  <groupId>javax.servlet.jsp</groupId> 
  <artifactId>jsp-api</artifactId> 
  <version>2.0</version>
  <scope>provided</scope>
</dependency>

JSP :

<%@ page session="true"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="utilfn" uri="/utility-functions" %>

веб.хмл :

<web-app id="WebApp_ID" version="2.4" 
 xmlns="http://java.sun.com/xml/ns/j2ee" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

관리자를 사용하여 Tomcat 6에 메이븐 빌드 전쟁을 배포하면 제대로 작동합니다. 내가 "Run As> Run On Server"를 이클립스로 실행하면 다음과 같이 나타납니다.

내가 보는 곳이라면 똑같은 말을한다.

그리고 전쟁을 독립적으로 전개 할 수 있기 때문에 그들은 괜찮아 보입니다. 그래서 여기서 뭐가 잘못 됐어!?

해결법

  1. ==============================

    1.그걸 확인해. .metadata / .plugins / org.eclipse.wst.server.core / tmp0 / wtpwebapps / Myproject / WEB-INF / lib / standard-1.1.2.jar는 손상되지 않습니다 (필요한 경우 정리).

    그걸 확인해. .metadata / .plugins / org.eclipse.wst.server.core / tmp0 / wtpwebapps / Myproject / WEB-INF / lib / standard-1.1.2.jar는 손상되지 않습니다 (필요한 경우 정리).

  2. ==============================

    2.Indigo Eclipse 3.7을 사용하여 이동하고 m2e의 최신 업데이트를 가져온 후이 문제가 발생했습니다. 아래 종속성이 제거되었습니다.

    Indigo Eclipse 3.7을 사용하여 이동하고 m2e의 최신 업데이트를 가져온 후이 문제가 발생했습니다. 아래 종속성이 제거되었습니다.

    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.1</version>
      <scope>provided</scope>
    </dependency>
    

    m2e의 새로운 버전이 jsp 컴파일 라이브러리를 이미 가지고 있기 때문에 이슈가 사라진 이유는 확실하지 않습니다.

  3. ==============================

    3.제거 :      javax.servlet.jsp    JSP로 - API를    2.0    제공된

    제거 :      javax.servlet.jsp    JSP로 - API를    2.0    제공된

    당신 pom.xml에서 그리고 그 일을해야 .. 그것은 내 사건에 근무 :-)

  4. ==============================

    4.maven / m2eclipse 플러그인에 문제가있는 것 같습니다. 심지어 나는 똑같은 문제를보고있다. 기본적으로 모든 jar 파일을 서버 lib 디렉토리로 푸시합니다. 범위 "제공된"jar 파일을 포함합니다. 이 문제는 이전 버전의 m2eclipse에서 수정되었습니다. 그러나 그것은 다시 소개되었습니다.

    maven / m2eclipse 플러그인에 문제가있는 것 같습니다. 심지어 나는 똑같은 문제를보고있다. 기본적으로 모든 jar 파일을 서버 lib 디렉토리로 푸시합니다. 범위 "제공된"jar 파일을 포함합니다. 이 문제는 이전 버전의 m2eclipse에서 수정되었습니다. 그러나 그것은 다시 소개되었습니다.

  5. ==============================

    5.빠른 수정:

    빠른 수정:

    .classpath 및 .project 및 .settings / org.eclipse.wst.common.component의 백업본을 만듭니다.

    다음 명령을 실행하십시오.

    mvn eclipse:eclipse
    

    또는 Maven 하위 메뉴에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하면 같은 작업을 수행한다고 생각되는 프로젝트 업데이트 명령이 생겼습니다.

    다시 게시하십시오.

    설명:

    모든 Maven 종속성을 배포 어셈블리로 프로젝트에 추가했을 가능성이 높습니다. 이렇게하면 모든 Maven 클래스 경로 항목이 WEB-INF / lib 디렉토리에 복사됩니다. 프로젝트의 루트에있는 .classpath 파일을 열면 다음 XML을 찾을 수 있습니다.

    <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
        </attributes>
    </classpathentry>
    

    그것은이 경우 문제가되는 모든 .jar 파일을 복사하는 것을 의미합니다.

    프로젝트를 업데이트하면 위의 XML 블록이 제거되고 JAR 파일이 명시 적으로 나열됩니다.

    따라서 .classpath를 다시 열면 다음과 같이 표시됩니다.

    <classpathentry kind="var" path="M2_REPO/com/google/code/gson/gson/2.2.1/gson-2.2.1.jar" sourcepath="M2_REPO/com/google/code/gson/gson/2.2.1/gson-2.2.1-sources.jar"/>
    <classpathentry kind="var" path="M2_REPO/javax/servlet/jsp/jsp-api/2.1/jsp-api-2.1.jar" sourcepath="M2_REPO/javax/servlet/jsp/jsp-api/2.1/jsp-api-2.1-sources.jar"/>
    ...
    

    이것은 여전히 ​​필요한 classpath를위한 것이지만 lib에 복사하는 종속성을 제거했습니다. 대신 .settings / org.eclipse.wst.common.component /를 열면 JAR 파일이 명시 적으로 나열됩니다.

    <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/com/google/code/gson/gson/2.2.1/gson-2.2.1.jar">
      <dependency-type>uses</dependency-type>
    </dependent-module>
    

    그리고 jsp-api-2.1.jar가 없어졌습니다. 같은 논리를 다른 JAR 파일에 적용하십시오.

    사람이 자동으로 만드는 방법을 알고 있습니까?

  6. ==============================

    6.플랫폼 : 일식 3.7 인디고, 바람둥이 6.0.29 pom.xml의 다음 종속성을 주석 처리했습니다.

    플랫폼 : 일식 3.7 인디고, 바람둥이 6.0.29 pom.xml의 다음 종속성을 주석 처리했습니다.

    javax.servlet  
    org.apache.taglibs  
    

    이것으로 문제가 해결되었습니다 (Tomcat을 통해 제공됨).

  7. ==============================

    7.제이의 대답에 동의합니다. 여기에도 같은 문제가 있습니다. pom.xlm에서 jsp-api를 제거하면 jsp-api jar에서 jspWriter 클래스를 찾을 수 없기 때문에 maven 테스트가 실패합니다. jsp-api를 pom에두고 '제공된'또는 'test'로 설정하면 m2e 플러그인이 jsp-api jar를 maven 종속성에 푸시하여 내 tomcat 배포 된 lib에 포함 시키므로 Tomcat 측은 실패합니다. jsp-api는 애플리케이션 서버에서 제공하기 때문에 제공된대로 pom.xml에 선언해야하므로 플러그인 문제라고 말할 수 있습니다. 나는이 문제를 해결할 방법을 찾지 못했지만 Tomcat 서버가 동기화 될 때마다 수동으로 jsp-api를 삭제했다.

    제이의 대답에 동의합니다. 여기에도 같은 문제가 있습니다. pom.xlm에서 jsp-api를 제거하면 jsp-api jar에서 jspWriter 클래스를 찾을 수 없기 때문에 maven 테스트가 실패합니다. jsp-api를 pom에두고 '제공된'또는 'test'로 설정하면 m2e 플러그인이 jsp-api jar를 maven 종속성에 푸시하여 내 tomcat 배포 된 lib에 포함 시키므로 Tomcat 측은 실패합니다. jsp-api는 애플리케이션 서버에서 제공하기 때문에 제공된대로 pom.xml에 선언해야하므로 플러그인 문제라고 말할 수 있습니다. 나는이 문제를 해결할 방법을 찾지 못했지만 Tomcat 서버가 동기화 될 때마다 수동으로 jsp-api를 삭제했다.

  8. ==============================

    8.Eclipse를 사용하면 'Eclipse WTP 용 Maven 통합'을 설치했는지 확인하십시오. WTP가없는 다른 플러그인을 사용하면 클래스 경로를 변경하고 webapp에 servlet-api.jar을 포함시킵니다.

    Eclipse를 사용하면 'Eclipse WTP 용 Maven 통합'을 설치했는지 확인하십시오. WTP가없는 다른 플러그인을 사용하면 클래스 경로를 변경하고 webapp에 servlet-api.jar을 포함시킵니다.

  9. ==============================

    9.pom.xml의 jstl import에서 jsp-api 종속성을 제외해야합니다.

    pom.xml의 jstl import에서 jsp-api 종속성을 제외해야합니다.

    <dependency>
        <groupId>javax.servlet.jsp.jstl</groupId>
        <artifactId>jstl-api</artifactId>
        <version>1.2</version>
        <exclusions>
            <exclusion>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
            </exclusion>
            <exclusion>
                <artifactId>jsp-api</artifactId>
                <groupId>javax.servlet.jsp</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    
  10. ==============================

    10.jsp-api 2.0을에서 제거했습니다. .metadata / .plugins / org.eclipse.wst.server.core / tmp0 / wtpwebapps / Myproject / WEB-INF / lib / 이것은 나를 위해 일했다.

    jsp-api 2.0을에서 제거했습니다. .metadata / .plugins / org.eclipse.wst.server.core / tmp0 / wtpwebapps / Myproject / WEB-INF / lib / 이것은 나를 위해 일했다.

  11. ==============================

    11.netbeans IDE 8.0.2에서 같은 오류가 발생했습니다. 내 부분은 발신 및 종료를 위해 8080으로 설정되었습니다. 나는 Tomcat 서버에 대해 발신을 8081로 변경했다. 그것은 효과가있다! 그런 다음 종료 포트 8005를 변경했습니다. 변경하려면 도구> 서버>

    netbeans IDE 8.0.2에서 같은 오류가 발생했습니다. 내 부분은 발신 및 종료를 위해 8080으로 설정되었습니다. 나는 Tomcat 서버에 대해 발신을 8081로 변경했다. 그것은 효과가있다! 그런 다음 종료 포트 8005를 변경했습니다. 변경하려면 도구> 서버>

    이제 내 Tomcat 서버가 작동합니다.

  12. from https://stackoverflow.com/questions/3452403/unable-to-read-tld-meta-inf-c-tld by cc-by-sa and MIT license