我正在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
这很能说明问题
包装<代码>组织。Geek8080在模块报告和模块数据库层中
这样,随着模块系统的到位和模块路径上的显式模块,没有两个模块可以导出相同的包。这种变化是为了实现可靠的配置和更好的可访问性而带来的。更多关于这些概念的阅读可以在模块系统的状态中找到。
作为一种解决方案,您可以在这些模块中分别将包重命名为org.report.Geek8080
和org.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 的可用空间。