2013-02-27 35 views
36

Khi tôi chạy ứng dụng của mình sau khi nhập URL, ngoại lệ này đang đến. Tôi đang sử dụng Eclipse và Tomcat7.0.35. Tôi cũng đã thêm Jstl.jar và jstl1.2.jarjava.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config

Mã của tôi là

java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 
    at org.apache.myfaces.view.jsp.JspViewDeclarationLanguage.buildView(JspViewDeclarationLanguage.java:91) 
    at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:78) 
    at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:199) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
+0

Bạn có thể cung cấp danh sách thư viện trong đường dẫn lớp học không? có vẻ như bạn đang thiếu 'jstl.jar' trong classpath của bạn – araknoid

+0

Tôi đã thêm các thư viện jsf-myfaces, jstl, primefaces trong cả classpath và đường dẫn xây dựng – Sagar

+0

@Sagar Bạn cần đảm bảo rằng các jars nằm trong thư mục 'WEB-INF/lib'. Xem câu trả lời của tôi. – dan

Trả lời

2

Có lẽ các thư viện JSTL bị thiếu từ classpath của bạn/không thể truy cập bởi tomcat.

Bạn cần phải thêm ít nhất các tập tin jar sau trong WEB-INF/lib thư mục của bạn:

  • jsf-impl.jar
  • jsf-api.jar
  • jstl.jar
+2

... và làm ** không ** fiddle với cài đặt * Đường dẫn xây dựng * của dự án. Chạm vào nó và hoàn tác nếu cần thiết bất kỳ thay đổi nào bạn đã thực hiện ở đó. Chỉ cần thả JAR trong '/ WEB-INF/lib' là đủ. Xem thêm http://stackoverflow.com/tags/jstl/info Lưu ý rằng JSTL 1.2 chỉ là một tệp JAR, không phải là hai tệp. Vì vậy, nếu bạn có 'jstl.jar' và' jstl-1.2.jar', bạn nên xóa cái đầu tiên. – BalusC

+0

@BalusC Điểm tốt. Cảm ơn BalusC. – dan

+0

@BalusC ThankYou – Sagar

3

Thêm jstl vào đường dẫn ứng dụng của bạn.

6

Theo mặc định, vùng chứa Tomcat không chứa bất kỳ thư viện jstl nào. Để khắc phục điều đó, tuyên bố jstl.jar trong tập tin pom.xml Maven của bạn nếu bạn đang làm việc trong dự án Maven hoặc thêm nó vào classpath của ứng dụng của bạn

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>jstl</artifactId> 
    <version>1.2</version> 
    </dependency> 
+2

không hoạt động cho tôi ( – gstackoverflow

60

Các lỗi được nói với bạn nó không thể tìm thấy những lớp vì nó không phải là có sẵn trong ứng dụng của bạn.

Nếu bạn đang sử dụng Maven, hãy chắc chắn bạn có sự phụ thuộc cho jstl vật:

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
</dependency> 

Nếu bạn không sử dụng nó, chỉ cần chắc chắn rằng bạn bao gồm JAR trong classpath của bạn. Xem this answer để biết các liên kết tải xuống.

+0

@ RaulGogo-Tôi không sử dụng Maven – Sagar

+0

Đoạn cuối cùng dành cho trường hợp bạn không có Maven. Xem câu trả lời trong liên kết được cung cấp. –

1

Chỉ cần một bình luận nhanh: đôi khi Maven không sao chép JSTL-.jar vào Thư mục WEB-INF ngay cả khi tệp pom.xml có mục nhập cho nó.

Tôi đã phải sao chép thủ công jar JSTL sang/WEB-INF/lib trên hệ thống tệp. Điều đó đã giải quyết được vấn đề. Vấn đề có thể liên quan đến plugin đóng gói chiến tranh Maven.

1

Thêm JSTL library làm phụ thuộc vào dự án của bạn (javax.servlet.jsp.jstl.core.Config là một phần của gói này). Ví dụ, nếu bạn đang sử dụng Gradle, bạn có thể viết trong một build.gradle:

dependencies { 
    compile 'javax.servlet:jstl:1.2' 
} 
1

tôi đã cùng một vấn đề. Chuyển đến Thuộc tính dự án -> Triển khai Assemplbly và thêm jstl jar

Các vấn đề liên quan