Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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中项目的构建路径中检测到一个循环_Java_Maven - Fatal编程技术网

Java 在maven中项目的构建路径中检测到一个循环

Java 在maven中项目的构建路径中检测到一个循环,java,maven,Java,Maven,关于这个错误有很多标题。但我找不到解决办法 我将创建一个多模块项目parentProject、projectA、projectD、projectUtil和projectWprojectW的包装为war,包含projectA、projectD和projectUtiljar文件 projectParent ├───projectA │ ├───src │ │ └───main/java/projectA │ │ ├───ClassA.java │ │ └─

关于这个错误有很多标题。但我找不到解决办法

我将创建一个多模块项目
parentProject
projectA
projectD
projectUtil
projectW
projectW
的包装为war,包含
projectA
projectD
projectUtil
jar文件

projectParent
├───projectA
│   ├───src
│   │   └───main/java/projectA
│   │       ├───ClassA.java
│   │       └───ClassB.java
│   └───pom.xml ---- packaging = jar & dependencies = projectD and projectUtil
├───projectD
│   ├───src
│   │   └───main/java/projectD
│   │       ├───ClassC.java
│   │       └───ClassD.java
│   └───pom.xml ---- packaging = jar & dependencies = projectA and projectUtil
├───projectUtil
│   ├───src
│   │   └───main/java/projectUtil
│   │       └───StringUtil.java
│   └───pom.xml ---- packaging = jar & dependencies = no dependency
├───projectW
│   ├───src
│   │   └───main/java/projectW
│   │       └───Test.java
│   └───pom.xml ---- packaging = war & dependencies = projectA, projectD and projectUtil
└───pom.xml ---- packaging = pom & modules = projectA, project D, projectUtil and projectW
在项目的生成路径中检测到循环之类的错误。我把错误变成了警告,就像互联网上的解决方案一样

Windows->首选项->Java->编译器->构建->循环 依赖关系

java已成功运行,但由于此警告,maven现在未安装。除了以下例外,有人能给我一个解决方案吗

Test.java

ClassA a = new ClassA();
a.getD().mrbDunya();

ClassD d = new ClassD();
d.getB().sayHello();
编辑

parentProject/pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.earslan</groupId>
    <artifactId>projectParent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>Project Parent</name>

    <modules>
        <module>projectA</module>
        <module>projectD</module>
        <module>projectUtil</module>
        <module>projectW</module>
    </modules>

</project>

4.0.0
艾尔斯兰公司
项目父级
1.0-快照
聚甲醛
项目父级
项目A
投射
projectUtil
项目W
projectA/pom.xml

<?xml version="1.0"?>
<project
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.earslan</groupId>
        <artifactId>projectParent</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>projectA</artifactId>
    <packaging>jar</packaging>

    <name>Project A</name>

    <dependencies>
        <dependency>
            <groupId>com.earslan</groupId>
            <artifactId>projectD</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.earslan</groupId>
            <artifactId>projectUtil</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

4.0.0
艾尔斯兰公司
项目父级
1.0-快照
项目A
罐子
项目A
艾尔斯兰公司
投射
1.0-快照
艾尔斯兰公司
projectUtil
1.0-快照
org.apache.maven.plugins
maven编译器插件
3.3
1.7
1.7
projectUtil/pom.xml

<?xml version="1.0"?>
<project
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.earslan</groupId>
        <artifactId>projectParent</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>projectUtil</artifactId>
    <packaging>jar</packaging>

    <name>Project Util</name>

    <dependencies>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

4.0.0
艾尔斯兰公司
项目父级
1.0-快照
projectUtil
罐子
项目Util
org.apache.maven.plugins
maven编译器插件
3.3
1.7
1.7
projectW/pom.xml

<?xml version="1.0"?>
<project
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.earslan</groupId>
        <artifactId>projectParent</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>projectW</artifactId>
    <packaging>war</packaging>

    <name>Project W</name>

    <dependencies>
        <!-- Project Files Dependency -->
        <dependency>
            <groupId>com.earslan</groupId>
            <artifactId>projectA</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.earslan</groupId>
            <artifactId>projectD</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.earslan</groupId>
            <artifactId>projectUtil</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!-- JSF Dependency -->
        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>2.2.2</version>
        </dependency>
        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-impl</artifactId>
            <version>2.2.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
        </dependency>

        <!-- PrimeFaces Dependency -->
        <dependency>
            <groupId>org.primefaces</groupId>
            <artifactId>primefaces</artifactId>
            <version>6.1</version>
        </dependency>
        <dependency>
            <groupId>org.primefaces.themes</groupId>
            <artifactId>bootstrap</artifactId>
            <version>1.0.10</version>
        </dependency>

        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3</version>
        </dependency>
    </dependencies>

    <repositories>
        <repository>
            <id>prime-repo</id>
            <name>PrimeFaces Maven Repository</name>
            <url>http://repository.primefaces.org</url>
            <layout>default</layout>
        </repository>
    </repositories>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

4.0.0
艾尔斯兰公司
项目父级
1.0-快照
项目W
战争
项目W
艾尔斯兰公司
项目A
1.0-快照
艾尔斯兰公司
投射
1.0-快照
艾尔斯兰公司
projectUtil
1.0-快照
com.sun.faces
JSFAPI
2.2.2
com.sun.faces
jsf impl
2.2.2
javax.servlet
javax.servlet-api
3.0.1
org.primefaces
素面
6.1
org.primefaces.themes
独自创立
1.0.10
文件上传
文件上传
1.3
优质回购
PrimeFacesMaven存储库
http://repository.primefaces.org
违约
org.apache.maven.plugins
maven编译器插件
3.3
1.7
1.7
├──项目A
│ ├───src
│ │ └───main/java/projectA
│ │ ├───ClassA.java
│ │ └───ClassB.java
│ └───pom.xml----packaging=jar&dependencies=projectD和projectUtil
├───项目D
│ ├───src
│ │ └───main/java/projectD
│ │ ├───ClassC.java
│ │ └───ClassD.java
│ └───pom.xml----packaging=jar&dependencies=projectA和projectUtil

项目A依赖于项目D,项目D依赖于项目A,项目A显然是循环的

您需要通过以下两种方式进行重构:

  • 在项目之间移动课程
  • 把两者融合在一起
  • 引入第三个项目(a和D都依赖于该项目),其中只包含相互依赖的类

  • 添加pomfiles@JensprojectW的pom文件还是全部?您需要删除循环依赖项。如果不能通过移动类来实现这一点,那么定义接口和依赖接口可能会有所帮助,而不是依赖于实现类。@emrealslan