0

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

当我尝试运行 Enhancer Tool 时,出现以下错误:

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”目录加载的。我不明白为什么。在项目构建路径中,只有一个来自“用户”和 DataNucleus 配置,我从“工具”添加了一个,就像上面建议的方法一样。

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

4

1 回答 1

0

所以毕竟,我并没有像我想象的那样仔细阅读说明。问题实际上是 jar 存在两次,一次在项目构建路径中,一次在 datanucleus 配置中。它不应该在项目构建路径中(或者实际上,它不应该在其中之一中,无论哪个都无所谓)。当我将库复制到 war 目录时,我自动将它添加到那里,并且我认为它必须完成。但说明清楚地表明只有 jdo-api需要在项目构建路径中。

不过有一件事我不明白。在说明的一个步骤中,我必须在 DataNuclues 配置中取消选中“运行工具时使用项目类路径” 。那么插件怎么可能还在使用项目构建路径中配置的库呢?

于 2012-08-03T08:42:26.373 回答