Khi cố gắng để chạy dự án của tôi như một WebApplication từ Eclipse, tôi đã được lỗi sau:NoClassDefFoundError: GuiceServletContextListener khi chạy GWT + GAE từ Eclipse
[WARN] failed [email protected]3fd{/,D:\Dev\Projects\The Five Orbs\trunk\target\fiveorbs-0.1}: java.lang.NoClassDefFoundError: com/google/inject/servlet/GuiceServletContextListener
[WARN] failed [email protected]: java.lang.NoClassDefFoundError: com/google/inject/servlet/GuiceServletContextListener
[WARN] Error starting handlers
java.lang.NoClassDefFoundError: com/google/inject/servlet/GuiceServletContextListener
Lớp có thể được tìm thấy tại thời gian biên dịch mặc dù (tùy chỉnh của tôi GuiceServletConfig mở rộng GuiceServletContextListener và biên dịch đúng cách).
Thư viện guice-servlet-3.0.jar
xuất hiện cả trong đường dẫn xây dựng dự án và trong đường dẫn lớp của Cấu hình chạy ứng dụng web của tôi trong Eclipse.
Các Arguments bảng điều khiển của Run Cấu hình của tôi có cấu hình như sau: trong lập luận Chương trình:
-remoteUI "${gwt_remote_ui_server_port}:${unique_id}" -startupUrl TheFiveOrbs.jsp -logLevel INFO -server com.google.appengine.tools.development.gwt.AppEngineLauncher -port 8888 -codeServerPort 9997 -war "D:\Dev\Projects\The Five Orbs\trunk\target\fiveorbs-0.1" com.fiveorbs.TheFiveOrbs
trong đối số VM:
-javaagent:D:\Dev\Programs\appengine-java-sdk\lib\agent\appengine-agent.jar -Xmx512m -Dappengine.sdk.root=D:\Dev\Programs\appengine-java-sdk
Khi tôi chạy mvn gae: chạy từ dấu nhắc lệnh với Maven, mọi thứ đều ổn - máy chủ khởi động đúng và không có ngoại lệ nào được hiển thị.
Tôi đã vật lộn với vấn đề này trong một vài giờ và thực sự không thể hiểu tại sao nó xảy ra.
Cảm ơn trước vì bất kỳ gợi ý nào bạn có thể cung cấp.
Sébastien
Thực vậy, điều này giải quyết được lỗi. Cảm ơn rất nhiều! –
Làm thế nào để bạn thực hiện điều đó? Tôi có 'guice-servlet-3.0.jar' trong classpath của tôi như là một phụ thuộc Maven, vì vậy nó sẽ không biến nó thành' WEB-INF/lib' bên trong Eclipse; Chỉ phụ thuộc GAE SDK mới thực hiện được. Tôi có thư mục WAR được đặt thành 'src/main/webapp' (trong đó, có' WEB-INF/'), và tôi không muốn chạy ứng dụng của mình từ' target/'của Maven, vì nó yêu cầu chạy 'mvn package' trước. – derabbink
Chưa hết, đó là cách Maven hoạt động! (cho đến khi gwt-maven-plugin bằng cách nào đó _fixed_). Thành thật mà nói, bạn chỉ cần chạy 'mvn package -Dgwt.compiler.skip' khi bạn thay đổi các phụ thuộc của bạn, mà thực sự không phải là thường xuyên. Một cách khác là không sử dụng máy chủ nhúng và sử dụng 'mvn appengine: devserver' (hoặc' mvn jetty: run' hoặc 'mvn tomcat7: run' khi bạn không sử dụng GAE) cùng với chạy GWT DevMode trong'-noserver 'chế độ. –