Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java maven中的Datanucleus增强器冲突依赖项-第2部分_Java_Maven_Datanucleus - Fatal编程技术网

Java maven中的Datanucleus增强器冲突依赖项-第2部分

Java maven中的Datanucleus增强器冲突依赖项-第2部分,java,maven,datanucleus,Java,Maven,Datanucleus,这个问题涉及到。我在那里尝试了这个解决方案,效果很好。但是如果我运行mvn clean compile,我会得到错误 Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project XXX: Fatal error compiling: java.lang.NoClassDefFoundError: org/datanucleus/util

这个问题涉及到。我在那里尝试了这个解决方案,效果很好。但是如果我运行mvn clean compile,我会得到错误

Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project XXX: Fatal error compiling: java.lang.NoClassDefFoundError: org/datanucleus/util/AnnotationProcessorUtils: org.datanucleus.util.AnnotationProcessorUtils.
知道为什么吗? 我正在使用datanucleus maven插件:3.3.0-release

问题是我有两个datanucleus核心:一个来自项目依赖项,另一个来自插件依赖项。在运行mvn datanuleus:Enhanced后的控制台中,以下行显示两次:

[INFO] CP: /home/user/.m2/repository/org/datanucleus/datanucleus-core/3.2.7/datanucleus-cor‌​e-3.2.7.jar

将datanucleus core设置为runtime意味着您不需要它进行编译(该线程中的用户需要它)。显然,您希望运行(DataNucleus)注释处理器(预编译),因此必须提供该处理器进行编译,因此您可以设置DataNucleus maven插件使用的DataNucleus核心版本(在其插件依赖项下),因此,它与整个pom.xml使用的内容相匹配,将datanucleus core设置为runtime意味着您不需要它进行编译(该线程中的用户需要它)。很明显,您希望运行(DataNucleus)注释处理器(预编译),因此必须提供该处理器进行编译,因此您可以设置DataNucleus maven插件使用的DataNucleus core版本(在其对插件的依赖项下),以便它与整个pom.xml使用的内容相匹配。我终于找到了一个解决方法。这不是最优雅的解决方案,但我认为没有其他解决方案

解决方法是将datanucleus核心依赖项添加到编译器插件(请注意
compile
范围)

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <dependencies>
        <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-core</artifactId>
            <version>3.2.8</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
    ...
</plugin>
来自datanucleus enhancer插件的datanucleus核心默认版本被
3.2.8
覆盖

<plugin>
    <groupId>org.datanucleus</groupId>
    <artifactId>datanucleus-maven-plugin</artifactId>
    <version>3.3.0-release</version>
    <dependencies>
        <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-core</artifactId>
            <version>3.2.8</version>
        </dependency>
    </dependencies>
</plugin>

org.datanucleus
datanucleus maven插件
3.3.0-发布
org.datanucleus
数据核核心
3.2.8

它也适用于3.2.9版。

我终于找到了解决方案。这不是最优雅的解决方案,但我认为没有其他解决方案

解决方法是将datanucleus核心依赖项添加到编译器插件(请注意
compile
范围)

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <dependencies>
        <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-core</artifactId>
            <version>3.2.8</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
    ...
</plugin>
来自datanucleus enhancer插件的datanucleus核心默认版本被
3.2.8
覆盖

<plugin>
    <groupId>org.datanucleus</groupId>
    <artifactId>datanucleus-maven-plugin</artifactId>
    <version>3.3.0-release</version>
    <dependencies>
        <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-core</artifactId>
            <version>3.2.8</version>
        </dependency>
    </dependencies>
</plugin>

org.datanucleus
datanucleus maven插件
3.3.0-发布
org.datanucleus
数据核核心
3.2.8

它也适用于3.2.9版。

检查此解决方案(使用排除)检查此解决方案(使用排除)我的依赖项和插件依赖项版本相同。问题是我有两次datanucleus核心:一次来自项目依赖项,另一次来自插件依赖项。在运行
mvn datanuleus:enhance
后的控制台中,以下行出现两次:
[INFO]CP:/home/user/.m2/repository/org/datanucleus/datanucleus core/3.2.7/datanucleus-core-3.2.7.jar
我所有的项目在pom.xml deps中都有datanucleus core,我也使用m2增强器插件,所以也有相同的插件。为什么要使用两次,可以通过使用“mvn--debug”来确定看看它对这两个entries的起源说了些什么我曾经从插件依赖项本身得到过一次(我覆盖了那里的版本)我有一次是从项目依赖项中获得的。我有相同版本的依赖项和插件依赖项。问题是我有两次datanucleus核心:一次来自项目依赖项,另一次来自插件依赖项。在运行
mvn datanuleus:enhance
后的控制台中,以下行出现两次:
[INFO]CP:/home/user/.m2/repository/org/datanucleus/datanucleus core/3.2.7/datanucleus-core-3.2.7.jar
我所有的项目在pom.xml deps中都有datanucleus core,我也使用m2增强器插件,所以也有相同的插件。为什么要使用两次,可以通过使用“mvn--debug”来确定看看它对这两个entries的起源说了些什么我从插件依赖项本身(我覆盖了那里的版本)和项目依赖项中得到了一次。