Java + GWT + GSON 在服务器端的应用

3
我已经阅读了,没有可能在GWT客户端代码中运行GSON,但可以在服务器代码中运行它。
我正在尝试实现后者,但无法使其工作。我认为com.whatever.server包中的任何类都可以访问整个JRE命名空间,包括反射。但似乎并非如此。那么所有这些开发人员是如何在GWT服务器代码中使用GSON的?(我是GWT的新手,所以答案可能很简单。)
谢谢。 编辑:我的设置如下:
  • test.gwt.xml 包含:<source path='client'><source path='shared'>
  • 客户端使用 private final TestServiceAsync testService = GWT.create(TestService.class); 并调用 testService.testMethod();
  • TestService接口和TestServiceAsync位于客户端包中
  • TestServiceImpl在test.server中实现,使用Gson g = new Gson();等等
抛出的异常是 java.lang.NoClassDefFoundError: com/google/gson/Gson。但似乎无论方法是否包含 GSON 代码(只要包含了 GSON 导入语句),都会引发该异常。
由于:java.lang.ClassNotFoundException: com.google.gson.Gson
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:151)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    ... 33 more

你在 GWT 应用程序的服务器端使用 GSON 不应该有任何问题。你遇到了什么错误?你确定你的 server 包没有被意外地 GWT 编译吗? - Jason Hall
你能详细解释一下你的结果吗? - chickeninabiscuit
这听起来与GWT关系不大,更多地涉及到您的构建路径未包含对必要的GSON代码的引用。 - Jason Hall
我的构建路径包含 gson.jar,它位于 /war/WEB-INF/lib/gson/*,并且 gson 库已标记为导出。我有遗漏什么吗? - Jan
1
好的,问题解决了:Jetty配置在/lib/gson/中找不到gson库,它应该只放在/lib目录下。感谢您的提示。 - Jan
2个回答

3
这是一个类路径问题。GSON不在类路径中。您使用哪个IDE?如果您使用的是eclipse - 1. 右键单击项目 2. 构建路径 3. 配置构建路径 4. 选择“库”选项卡 5. 点击“添加JAR文件...” 6. 在弹出窗口中为每个必需的JAR文件选择正确的位置。

0
在 JSP/Servlet Web 应用程序中,您只需将第三方 JAR 文件放入 /WEB-INF/lib 文件夹即可。如果项目是动态 Web 项目,则 Eclipse 将自动处理正确的构建路径设置。您无需费心地调整 Eclipse 的构建路径。别忘了撤消所有操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接