2008-10-16 5 views
6

Eclipse 3.4와 WTP 3.0.2를 사용하고 상당히 큰 동적 웹 프로젝트를 실행 중입니다. 내가 http://127.0.0.1:8080/share/에 액세스 할 수 있도록 내가 프로젝트를 설정했지만 내가 할 때마다, 나는 다음과 같은 오류가 발생합니다 :Eclipse 및 JSP : java.lang.NoSuchMethodError : javax.servlet.jsp.tagext.TagAttributeInfo.(Ljava/lang/String; ZLjava/lang/String; ZZ) V

 
    java.lang.NoSuchMethodError: javax.servlet.jsp.tagext.TagAttributeInfo.(Ljava/lang/String;ZLjava/lang/String;ZZ)V 
    at org.apache.jasper.compiler.TagLibraryInfoImpl.createAttribute(TagLibraryInfoImpl.java:572) 
    at org.apache.jasper.compiler.TagLibraryInfoImpl.createTagInfo(TagLibraryInfoImpl.java:401) 
    at org.apache.jasper.compiler.TagLibraryInfoImpl.parseTLD(TagLibraryInfoImpl.java:248) 
    at org.apache.jasper.compiler.TagLibraryInfoImpl.(TagLibraryInfoImpl.java:162) 
    at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:423) 
    at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:492) 
    at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1552) 
    at org.apache.jasper.compiler.Parser.parse(Parser.java:126) 
    at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:211) 
    at org.apache.jasper.compiler.ParserController.parse(ParserController.java:100) 
    at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:155) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:295) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:276) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:264) 
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875) 
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) 
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) 
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) 
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) 
    at java.lang.Thread.run(Unknown Source) 

위의 파일 중 어느 것도 문제의 원인을 지적, 내 자신 없기 때문에 꽤 어렵습니다. 어떤 아이디어를 찾고 시작할 것입니까?

답변

5

나는 내 자신의 질문에 답하는 것을 끝내었다 : 문제는 내가 Tomcat에 추가 한 필요한 JAR 중에서 상충되는 서블릿 이었다는 것이다. 이걸 제거하면 오류가 사라집니다.

0

"환경 설정 -> Tomcat-> 고급 -> Tomcat 기반"에서 Tomcat 경로를 설정 했습니까?

경로를 청소하고 (기본 구성으로 돌아가는) 문제가 해결되는지 확인하십시오.

0

아마도 이클립스의 Tomcat 플러그인 때문에 충돌 문제가 발생합니다. 동일한 버전의 jar 파일을 가져 와서 이클립스의 tomcat 플러그인에서 문제를 해결할 수 있습니다.

0

나는 비슷한 문제를 가지고 있었고, 나는 내 응용 프로그램에 의해 수행되고 있으며, 또한 전에서 j2ee.jar은 파일을 구 유지했던 클래스 경로에 servlet.jar 파일의 올바른 버전을 가지고 있음을 보장함으로써이 문제를 해결했다 classpath와 그것이 주된 문제를 일으키고 있었다. 그래서 classpath에서 제거하여 기본 파일로 사용하도록했습니다.

+1

향후 문제가 발생할 수 있습니다. '/ WEB-INF/lib'와 같은 webapp 전용 라이브러리에 서버 특정 라이브러리를 포함해서는 안됩니다. 느슨한 서버 별 JAR 파일을 복사/복제해서는 안됩니다. 'servlet.jar'는 Tomcat에 특정한 것입니다. 'j2ee.jar'는 글래스 피쉬 특유의 것입니다. 그들을 섞지 마십시오. 소속 된 곳의 서버 라이브러리에 보관하십시오. 기본적으로해야 할 일은 파일 시스템 경로를 클래스 경로 (빌드 경로)에 추가하는 것입니다. Eclipse에서 * Servers * 뷰에 서버를 통합하고이를 프로젝트 특성의 * Targeted Runtime *에 의해 프로젝트와 연관시키는 일만하면된다. – BalusC

0

Maven이 종속성을 처리하고 Jetty를 웹 서버로 사용하여 Eclipse Helios를 실행하는 것과 동일한 문제가 발생했습니다. 스프링 3.1로 업데이트 한 후 갑자기이 문제가 발생했지만 로컬 개발 기계에서만 문제가 발생했습니다.

필자는 로컬 Maven 저장소에서 spring과 jetty 폴더를 먼저 삭제하고 종속성을 업데이트했지만 상황을 개선하지는 못했습니다.

그런 다음 부두와 함께 제공되는 servlet-api 및 servlet-api-2.5 폴더를 삭제했습니다 (그러나 나머지는 모두 남겨 둡니다).

모두 classpath의 마법.

관련 문제