java 11和spring启动错误:这个类应该是模块信息
我已经创建了一个简单的Spring引导应用程序,并且正在尝试将其移动到一个更新的jdk版本。我的计划是使用jlink并将其作为一个完整的包分发。但我得到了一个错误: 该类应为模块信息 当我试图用maven编译它时。如果我删除了模块信息,它就会工作(并按照预期生成自包含的jar)。我还缺什么吗 module-info.java:java 11和spring启动错误:这个类应该是模块信息,java,spring-boot,maven,java-11,java-module,Java,Spring Boot,Maven,Java 11,Java Module,我已经创建了一个简单的Spring引导应用程序,并且正在尝试将其移动到一个更新的jdk版本。我的计划是使用jlink并将其作为一个完整的包分发。但我得到了一个错误: 该类应为模块信息 当我试图用maven编译它时。如果我删除了模块信息,它就会工作(并按照预期生成自包含的jar)。我还缺什么吗 module-info.java: module operations { requires static lombok; requires commons.beanutils; requires ope
module operations {
requires static lombok;
requires commons.beanutils;
requires opencsv;
requires commons.net;
requires spring.data.mongodb;
requires spring.data.commons;
requires java.validation;
requires org.mongodb.bson;
requires spring.web;
requires spring.context;
requires spring.core;
requires spring.boot;
requires spring.beans;
requires org.apache.logging.log4j;
requires spring.context.support;
requires java.mail;
requires thymeleaf;
requires org.apache.commons.lang3;
requires com.fasterxml.jackson.core;
requires com.fasterxml.jackson.databind;
requires java.annotation;
requires org.apache.commons.collections4;
requires spring.boot.autoconfigure;
requires java.ws.rs;
requires spring.security.core;
requires spring.messaging;
requires spring.websocket;
requires java.management;
requires spring.security.web;
requires org.apache.tomcat.embed.core;
requires spring.security.config;
requires java.security.sasl;
exports com.testapp.operations;
}
项目结构:
src/main/java/
...module-info.java
.../com/testapp/operations/(all classes)
pom.xml
问题似乎出在某些依赖项中,这些依赖项会阻止模块正确编译。在我的例子中,问题在于类路径上的
cglib
库(maven依赖项):
cglib
cglib
3.2.5
在我的例子中,解决方案是将库更新到最新版本3.3.0
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.3.0</version>
</dependency>
cglib
cglib
3.3.0
找到有问题的库的最佳方法是逐个注释掉依赖项,并在每次这样的操作之后运行构建。一旦代码正确编译,就会识别出有问题的库。尝试更新它,或者,如果没有可用的更新,则将其排除
如果不选择排除,可能的解决方案是使用库将代码提取到单独的模块中。这个新模块可以编译为自动模块(没有module info.java)。您什么时候会看到这个错误?执行哪个命令?感谢您的回复,我在执行mvn clean Package时得到了它。有没有可能有人将常规类重命名为module-info.class?
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.3.0</version>
</dependency>