尝试使用源映射时java.lang.NoClassDefFoundError:org / json / JSONException

时间:2012-06-07 00:28:30

标签: gwt

期待已久的超级开发模式came我尝试使用它。构建GWT中继后,我创建了一个测试应用程序并成功编译。然后我将其添加到模块XML文件中,目的是启用Chrome的Source Maps:

<!-- Allows debugging without DevMode  -->
<set-property name="compiler.useSourceMaps" value="true">
   <when-property-is name="user.agent" value="safari" />
</set-property>
然后我尝试编译应用程序。输出如下:

Compiling module com.hsi.gwt.test.sdm.Hello_sdm
   Compiling 6 permutations
      Compiling permutation 0...
      Compiling permutation 1...
      Compiling permutation 2...
      Compiling permutation 3...
      Compiling permutation 4...
      Compiling permutation 5...
      Source Maps Enabled
   Compile of permutations succeeded
Linking into /Users/bbrudnoy/Workspaces/indigo-hsi/hello-sdm/war/hello_sdm
   Invoking Linker Export CompilationResult symbol maps
      [ERROR] Failed to link
java.lang.NoClassDefFoundError: org/json/JSONException
    at com.google.gwt.thirdparty.debugging.sourcemap.SourceMapGeneratorV3.mergeMapSection(SourceMapGeneratorV3.java:243)
    at com.google.gwt.core.linker.SymbolMapsLinker.link(SymbolMapsLinker.java:299)
    at com.google.gwt.core.ext.linker.impl.StandardLinkerContext.invokeLinkForOnePermutation(StandardLinkerContext.java:372)
    at com.google.gwt.dev.Link.finishPermutation(Link.java:491)
    at com.google.gwt.dev.Link.doSimulatedShardingLink(Link.java:453)
    at com.google.gwt.dev.Link.link(Link.java:200)
    at com.google.gwt.dev.Compiler.run(Compiler.java:262)
    at com.google.gwt.dev.Compiler.run(Compiler.java:198)
    at com.google.gwt.dev.Compiler$1.run(Compiler.java:170)
    at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:88)
    at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:82)
    at com.google.gwt.dev.Compiler.main(Compiler.java:177)
Caused by: java.lang.ClassNotFoundException: org.json.JSONException
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 12 more

我错过了什么?

2 个答案:

答案 0 :(得分:2)

如果您使用Maven,请将以下内容添加到您的pom.xml文件中。它应该可以帮助你克服这个问题。

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20090211</version>
</dependency>

答案 1 :(得分:0)

编辑:这在GWT 2.5中得到修复

这是一个众所周知的问题:http://code.google.com/p/google-web-toolkit/issues/detail?id=7397

作为一种快速解决方法,您可以将gwt-servlet-deps.jar添加到类路径中。

BTW,超级开发模式将自动生成源映射,您不需要在模块中启用它们(但是现在您必须启用超级开发模式并使用xsiframe链接器)