2

我正在使用 Hibernate 在我的 Google Web Toolkit 项目中实现远程过程调用。当我从 Eclipse 作为谷歌“Web 应用程序”运行它时,在调用服务时(当我按下网页上的按钮时)出现 NoClassDefFoundError 异常:

Starting Jetty on port 8888
   [WARN] Exception while dispatching incoming RPC call
com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract java.lang.String edu.mit.ll.irbenchmark.client.MetricDataTableService.getDataString(edu.mit.ll.irbenchmark.EvaluationMetric)' threw an unexpected exception: java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration
    at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:385)
    at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:588)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)

但是当我“GWT编译”项目并将目录“war”的内容复制到tomcat6时,它完美地工作!

以下 jar 在我的 war/WEB-INF/lib 目录中:

antlr-3.4-complete.jar
commons-collections3-3.2.1.jar
dom4j.jar
gwt-servlet.jar
hibernate-commons-annotations-3.2.0.Final.jar
hibernate-core-3.6.9.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
IRBenchmarker.jar
javassist-3.12.0.GA.jar
jta-1.1.jar
log4j-1.2-1.2.16.jar
mysql-connector-java-5.1.16.jar
slf4j-api-1.6.4.jar
slf4j-log4j12-1.6.4.jar
4

2 回答 2

1

将库放入 WEB-INF/lib 对 Eclipse 来说是不够的。您还需要将它添加到项目的类路径中(右键单击 jar,然后选择构建路径 > 添加到构建路径)。

于 2012-10-30T20:18:11.293 回答
1

右键单击您的项目并转到属性。然后转到 Google-> Web 应用程序。确保选中“此项目具有 WAR 目录”,并且您的 war 文件夹位于复选框下方。既然你在那里,看看 Google-> Web Tooklit 并确保选中“使用 Google Web Toolkit”并寻址正确的库不会有什么坏处。

于 2012-11-06T20:28:46.793 回答