DataNucleus Enhancer不起作用

时间:2012-08-02 19:55:54

标签: google-app-engine datanucleus

我正在使用Google AppEngine和Spring MVC编写一个Web应用程序。我按照以下步骤小心地升级到DataNucleus插件的v2:http://code.google.com/p/datanucleus-appengine/wiki/UpgradingToVersionTwo(我使用Eclipse)。

当我尝试运行Enhancer工具时,我收到以下错误:

Exception in thread "main" Plugin (Bundle) "org.datanucleus" is already registered. Ensure you dont have multiple JAR versions of the same plugin in the classpath. The URL 
"file:/.../eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.6.4.v201203300216r37/appengine-java-sdk-1.6.4/lib/opt/user/datanucleus/v2/datanucleus-core-3.0.6.jar" is already registered, and you are trying to register an identical plugin located at URL 
"file:/.../eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.6.4.v201203300216r37/appengine-java-sdk-1.6.4/lib/opt/tools/datanucleus/v2/datanucleus-core-3.0.6.jar."

我格式化了消息,以便您可以看到微小的差异,一个jar从“user”目录加载,另一个从“tools”目录加载。我不明白为什么。在项目构建路径中,只有一个来自“user”和DataNucleus配置,我添加了一个来自“tools”,就像上面提到的howto一样。

在其他情况下,我看到这个消息主要是由datanucleus插件的冲突版本引起的,但它并不适用于我。我想在我的情况下这只是一些愚蠢的事情......所以我做错了什么?

1 个答案:

答案 0 :(得分:0)

毕竟,我没有按照我的想法仔细阅读说明书。问题实际上是罐子有两次,一个在项目构建路径中,一个在datanucleus配置中。它不应该在项目构建路径中(或者实际上,它不应该在其中一个中,哪个不重要)。当我将libs复制到war目录时,我自动添加它,我认为必须完成它。但是说明清楚地说明只有jdo-api 需要在项目构建路径中。

但有一点我不明白。在指令的一个步骤中,我必须在DataNuclues配置中取消选中“在运行工具时使用项目类路径”。那么插件如何仍然可以使用项目构建路径中配置的库?