我有一个奇怪的问题。我从Google Web Toolkit收到错误,说明以下内容:
com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract
com.pluspopularity.model.LinkItem com.pluspopularity.web.client.GreetingService.greetServer(java.lang.String)
throws java.lang.IllegalArgumentException' threw an unexpected exception:
java.lang.NoClassDefFoundError: org/json/JSONException
现在,我可以找到很多关于此java.lang.NoClassDefFoundError: org/json/JSONException
例外的问题,但它们似乎都由GWT 2.5版修复,因为org.json
包含在gwt-dev.jar
包中。
我有2.5版,我可以在GWT SDK库中看到org.json
。
所以我不知道这个错误来自哪里。
我注意到的事情:GWT SDK文件夹包含很多jar文件,但是当我在Eclipse中添加它作为SDK时,只包含4个:gwt-user.jar
,gwt-dev.jar
,validation-api-1.0.0.GA-sources.jar
和validation-api-1.0.0.GA.jar
。在关于2.5之前的GWT版本中出现此错误的一些问题中,我看到了gwt-servlet-deps.jar
文件的提及。该文件位于我的GWT SDK文件夹中,但它不包含在Eclipse的SDK库中。
我通过Eclipse重新安装了GWT SDK,但仍然只包含了这4个文件。
答案 0 :(得分:2)
在运行时(显然),在服务器端出现错误。
如果Eclipse插件没有为你做(我不知道它是否应该这样做),你应该去gwt-servlet-deps.jar
(或任何包含org.json
的JAR)并将其复制到WEB-INF/lib
旁边的gwt-servlet.jar
。
答案 1 :(得分:0)
org.json.JSONException存在于 json-20090211.jar 。
gwt-user和request-factory-server都依赖于它。在maven设置中,它会通过请求工厂自动复制,因为它们都在运行时范围内。