当前位置: 首页 > 知识库问答 >
问题:

在IntelliJ IDEA中运行多模块项目时出错

竺承望
2023-03-14

我正在IntelliJ IDEA终极版2020.2中制作一个maven项目。这是一个多模块项目。当我从其中一个模块运行一个类时,我会收到错误,但如果我从打包的jar运行,它会运行良好。这是应用程序的结构:

C:.
| pom.xml
|
+---DatabaseTier
|   |   pom.xml
|   |
|   +---src
|   |   \---main
|   |       +---java
|   |       |   |   module-info.java
|   |       |   |
|   |       |   \---org
|   |       |       \---Geek8080
|   |       |           |   DatabaseTest.java
|   |       |           |
|   |       |           \---service
|   |       |               \---database
|   |       |                   |   Database.java
|   |       |                   |
|   |       |                   \---entities
|   |       |                           JournalPage.java
|   |       |
|   |       \---resources
|   |               log4j2.xml
|   |               table.sql
|   |
|   \---target
|       +---classes
|       |   |   log4j2.xml
|       |   |   module-info.class
|       |   |   table.sql
|       |   |
|       |   \---org
|       |       \---Geek8080
|       |           |   DatabaseTest.class
|       |           |
|       |           \---service
|       |               \---database
|       |                   |   Database.class
|       |                   |
|       |                   \---entities
|       |                           JournalPage.class
|       |
|       \---generated-sources
|           \---annotations
\---Reports
    |   pom.xml
    |
    +---src
    |   +---main
    |   |   +---java
    |   |   |   |   module-info.java
    |   |   |   |
    |   |   |   \---org
    |   |   |       \---Geek8080
    |   |   |           |   ReportTest.java
    |   |   |           |
    |   |   |           \---service
    |   |   |               \---report
    |   |   |                       ExcelReports.java
    |   |   |                       PDFReports.java
    |   |   |
    |   |   \---resources
    |   |           log4j2.xml
    |   |           MTCORSVA.TTF
    |   |
    |   \---test
    |       \---java
    \---target
        +---classes
        |   |   log4j2.xml
        |   |   module-info.class
        |   |   MTCORSVA.TTF
        |   |
        |   \---org
        |       \---Geek8080
        |           |   ReportTest.class
        |           |
        |           \---service
        |               \---report
        |                       ExcelReports.class
        |                       PDFReports.class
        |
        \---generated-sources
            \---annotations

这是主要的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>org.Geek8080</groupId>
        <artifactId>Journal</artifactId>
        <packaging>pom</packaging>
        <version>1.0</version>
    
        <modules>
            <module>DatabaseTier</module>
            <module>Reports</module>
        </modules>
    
        <name>Journal Daily</name>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>11</maven.compiler.source>
            <maven.compiler.target>11</maven.compiler.target>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-api</artifactId>
                <version>2.13.3</version>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>2.13.3</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                    <configuration>
                        <source>11</source>
                        <target>11</target>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>3.1.1</version>
                    <executions>
                        <execution>
                            <id>copy-dependencies</id>
                            <phase>package</phase>
                            <goals>
                                <goal>copy-dependencies</goal>
                            </goals>
                            <configuration>
                                <outputDirectory>${project.build.directory}/lib</outputDirectory>
                                <overWriteReleases>false</overWriteReleases>
                                <overWriteSnapshots>false</overWriteSnapshots>
                                <overWriteIfNewer>true</overWriteIfNewer>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </project>

pom。DatabaseTier模块中的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">
    <parent>
        <artifactId>Journal</artifactId>
        <groupId>org.Geek8080</groupId>
        <version>1.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>DatabaseTier</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derby</artifactId>
            <version>10.15.2.0</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>org.Geek8080.DatabaseTest</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id> <!-- this is used for inheritance merges -->
                        <phase>package</phase> <!-- bind to the packaging phase -->
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>


</project>

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">
    <parent>
        <artifactId>Journal</artifactId>
        <groupId>org.Geek8080</groupId>
        <version>1.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>Reports</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.Geek8080</groupId>
            <artifactId>DatabaseTier</artifactId>
            <version>1.0</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
            <version>2.0.21</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>org.Geek8080.ReportTest</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id> <!-- this is used for inheritance merges -->
                        <phase>package</phase> <!-- bind to the packaging phase -->
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

这是我得到的错误:

初始化启动层java时出错。lang.LayerInstationException:包组织。模块报告和模块数据库层中的Geek8080

进程已完成,退出代码为1

共有1个答案

庄高谊
2023-03-14

这很能说明问题

包装<代码>组织。Geek8080在模块报告和模块数据库层中

这样,随着模块系统的到位和模块路径上的显式模块,没有两个模块可以导出相同的包。这种变化是为了实现可靠的配置和更好的可访问性而带来的。更多关于这些概念的阅读可以在模块系统的状态中找到。

作为一种解决方案,您可以在这些模块中分别将包重命名为org.report.Geek8080org.database.Geek8080

 类似资料:
  • 问题内容: 这是一个基本问题,我只是不太熟悉Maven多模块结构。说,我有一个Web应用程序。我想将一些模块连接到它(某些服务)。我是否需要仅将其中一个模块(依赖于其他模块)制作为一个Web应用程序,然后运行它?一开始我以为我可以运行整个项目,但是这个选项在我的IDE中是无效的(我现在正在使用NetBeans),这使我认为我应该运行一个类似于主模块的东西(在这种情况下为Web应用程序) )。是这样

  • 我有一个基本的SpringBoot应用程序。使用Spring初始值设定项、嵌入式Tomcat、Thymeleaf模板引擎,并将包作为可执行的JAR文件。是一个带有Spring Boot的多模块项目,该项目将有3个模块。这里是父模块pom。xml 这里是模块核心 这里是模块web: 从父根目录,我使用以下方法生成所有模块: 但问题是tdk-web-0.0.2-SNAPSHOT。jar不包含tdk-c

  • 我有一个多模块Maven项目,有一个主pom和许多子目录,每个子目录都包含引用主pom的项目(和pom.xml文件)。 在project ectA中包含对exec-maven-plugin的调用,它执行java目标并成功调用驻留在project ectA中某个地方的测试类(在project ectA/test/com/mycompany/Testclass.java)。插件声明如下:org.cod

  • 我的maven项目结构: 我的问题是,我只需要运行父模块,它自动实例化子模块(tomcat服务器)。spring boot多模块项目有可能吗? 注意:我使用的是STS。父模块打包是pom,子模块打包是jar文件。 我的父pom文件 我的问题是如何使用Tomcat运行父项目?如果我运行父项目,子模块是否自动运行? 提前感谢!!!

  • 我似乎在多模块项目中遇到了奇怪的classcast异常。以下是项目结构的简要概述: 我已经创建了一个小testresource,在这里我注入了一些服务,一个EntityManager等等。一切似乎都在工作,除了我得到了非常奇怪的ClassCastException JAVAClassCastException:class com。大地测量学。查询结构。选择器。SampleRequestSelect

  • 请看上图。 我该如何解决这个错误? 我的 Windows 电脑有 4 GB 内存,而我的 C 盘中只有 6GB 的可用空间。