【问题标题】:Runtime exception - Datanucleus enhancer运行时异常 - Datanucleus 增强器
【发布时间】:2012-06-21 18:49:29
【问题描述】:

为了触发Datanucleus enhancer,我需要对 Persistable 类/实体进行虚拟修改,然后再次保存。 但是,当触发时,会抛出/记录此错误:

java.lang.RuntimeException: Unexpected exception
    at com.google.appengine.tools.enhancer.Enhancer.execute(Enhancer.java:76)
    at com.google.appengine.tools.enhancer.Enhance.<init>(Enhance.java:71)
    at com.google.appengine.tools.enhancer.Enhance.main(Enhance.java:51)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.google.appengine.tools.enhancer.Enhancer.execute(Enhancer.java:74)
    ... 2 more
Caused by: java.lang.NoSuchMethodError: org.datanucleus.plugin.PluginManager.<init>(Lorg/datanucleus/PersistenceConfiguration;Lorg/datanucleus/ClassLoaderResolver;)V
    at org.datanucleus.OMFContext.<init>(OMFContext.java:159)
    at org.datanucleus.enhancer.DataNucleusEnhancer.<init>(DataNucleusEnhancer.java:172)
    at org.datanucleus.enhancer.DataNucleusEnhancer.<init>(DataNucleusEnhancer.java:150)
    at org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1157)
    ... 7 more

虽然 datanucleus-enhancer-3.0.1 位于 Maven 类路径中,也位于 WEB-INF/文件夹中。

如果没有缺少库,会导致此错误的原因是什么?

【问题讨论】:

  • 这里的一个解决方案:stackoverflow.com/questions/6200414/… 说修复将包括“jasper-compiler-jdt”我不确定这个是否应该包含在 GAE 中
  • Datanucleus 能够在没有 Jasper 组件的情况下运行。

标签: java eclipse google-app-engine datanucleus


【解决方案1】:

你相信你在互联网上读到的一切吗? jasper-compiler 与 DataNucleus 增强有什么关系?答:没什么。那篇文章是关于一些 Jasper 类中缺少的一些方法......你没有。

您只是使用了不一致的“datanucleus-enhancer”和“datanucleus-core”版本。如果您使用的是 Maven,则不会有问题,但由于您不是,您可以很容易地看到here,如果使用 datanucleus-enhancer 3.0.1,那么您还需要 datanucleus-core 3.0.x。毕竟这也是 NoSuchMethodError 所暗示的……CLASSPATH 中不存在某些东西。打包的 DataNucleus zip 发行版始终提供所有一致的文件,因此您也没有使用过其中一个

【讨论】:

  • 我正在使用 Maven。我相信我已经定义为 Datanucleus 依赖项使用 v 3.0.1。
  • 那么你为什么要引用 OMFContext 呢?很久以前从 DataNucleus 中消失了。您的类路径错误。
  • 好吧,我创建了一个新的 Eclipse 项目,该项目是从我原来的 Maven 项目迁移而来,并在 CLASSPATH 和 WEB-INF\lib 文件夹中手动添加依赖项。当我尝试执行 POST 时,出现此错误:Persistent class \"com.myapp.model.Account\" has no table in the database,
  • 从日志中说:“NullPointerException: ormLibs cannot be null”
  • 与增强有什么关系?这个问题是关于增强的
猜你喜欢
  • 2012-11-28
  • 1970-01-01
  • 2012-05-26
  • 1970-01-01
  • 1970-01-01
  • 2013-11-10
  • 2013-07-02
  • 1970-01-01
相关资源
最近更新 更多