【问题标题】:Error with ClassEnhancer "ASM"ClassEnhancer“ASM”错误
【发布时间】:2013-09-10 20:00:51
【问题描述】:

我需要一些帮助!我已经重新安装了 Eclipse 和最新的 GWT SDK 2.5.1/App Engine SDK 1.8.4,而我之前工作的应用程序不再工作了。我找不到出路。

据我所知,它与 Maven 依赖项有关。我可以删除它吗?如何? 我相信这很简单。请帮忙!

这是日志:

sep 10, 2013 9:40:01 PM org.datanucleus.enhancer.DataNucleusEnhancer addMessage
SEVERE: An error occured for ClassEnhancer "ASM" when trying to call the method "org.datanucleus.enhancer.asm.ASMClassEnhancer" on class "getClassNameForFileName" : class org.datanucleus.enhancer.asm.ASMClassEnhancer$MyClassVisitor has interface org.objectweb.asm.ClassVisitor as super class
java.lang.IncompatibleClassChangeError: class org.datanucleus.enhancer.asm.ASMClassEnhancer$MyClassVisitor has interface org.objectweb.asm.ClassVisitor as super class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at com.google.appengine.tools.enhancer.EnhancerLoader.loadClass(EnhancerLoader.java:107)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.datanucleus.enhancer.asm.ASMClassEnhancer.getClassNameForFileName(ASMClassEnhancer.java:152)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.datanucleus.enhancer.DataNucleusEnhancer.getClassNameForFilename(DataNucleusEnhancer.java:920)
at org.datanucleus.enhancer.DataNucleusEnhancer.getFileMetadataForInput(DataNucleusEnhancer.java:736)
at org.datanucleus.enhancer.DataNucleusEnhancer.enhance(DataNucleusEnhancer.java:545)
at org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1252)

【问题讨论】:

  • 作为第一个措施,我会清理项目。如果这没有帮助,请删除所有生成的目录(先备份)。
  • 感谢克里斯的提示。我以前做过 - 没有解决问题......
  • 好吧,可能是asm版本的问题,类似stackoverflow.com/a/13552626/291741
  • 亲爱的克里斯!谢谢您的帮助;但我没有成功:( 在我的项目中我没有 asm*.jar 文件。我尝试添加一个(即上面链接中写的 3.3.1),但它仍然无法正常工作。我尝试切换数据核到 v2,但后来我得到: 引起:org.datanucleus.exceptions.NucleusUserException:你似乎在 CLASSPATH 中有 ASM v3,你需要 ASM v4。我试图将 asm-4.0.jar 添加到 lib 文件夹和类路径。但是问题仍然存在..有什么想法吗???
  • 嗯,当我选择 Datanucleus 版本 v2 时,我的 App Engine SDK 1.8.4(我从 Eclipse 3.7 更新站点下载)自动包含 asm-4.0。可能有帮助的一件事是取消选中项目属性中的“Google > App Enginge > 使用 Google App Engine”,然后单击“确定”。再次打开项目属性,检查构建路径(它现在应该不包含 asm.jars),然后再次启用“Google > App Enginge > Use Google App Engine”。

标签: gwt datanucleus


【解决方案1】:

我找到了解决方案:在构建路径中,我包含了我不再需要的库。清理项目后,应用程序按预期工作。

PS:感谢克里斯的帮助!

【讨论】:

    【解决方案2】:

    您可以尝试将 GAE 的“持久性”从 JPA2 更改为 JPA1。它对我有用。

    【讨论】:

      猜你喜欢
      • 2015-05-17
      • 2017-04-05
      • 1970-01-01
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      • 1970-01-01
      • 2023-03-11
      相关资源
      最近更新 更多