java - java 11和spring boot错误:this_class应该是module-info
问题描述
我创建了一个简单的 Spring Boot 应用程序,并且正在尝试将其移至较新的 jdk 版本。我的计划是使用 jlink 并将其作为一个完整的包分发。但我收到了这个错误:
this_class 应该是模块信息
当我尝试用 maven 编译它时。如果我删除模块信息,它会起作用(并且它会按预期生成自包含的 jar)。我还缺少其他东西吗?
模块信息.java:
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依赖):
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.2.5</version>
</dependency>
就我而言,解决方案是将库更新到最新版本 3.3.0
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.3.0</version>
</dependency>
查找有问题的库的最佳方法是逐个注释掉依赖项,并在每次此类操作后运行构建。一旦代码正确编译,就会识别出有问题的库。尝试更新它,或者,如果没有可用的更新,则将其排除。
如果排除不是一个选项,可能的解决方案是将使用库的代码提取到单独的模块中。这个新模块可以编译为自动模块(没有 module-info.java)。
推荐阅读
- sql - 操作期间赋值时影响SQL Order by子句
- c# - 在 Entity Framework Core 中更新依赖于自身(或另一列)的列的最佳实践?
- python - Python 为什么函数返回 None 而不是 False
- docker - 使用 Docker 部署,使用 Nginx,浏览器 --> 未找到,在此服务器上未找到请求的资源
- linux - docker images 是列出整个图像的大小还是只是其中的一层?
- javascript - undefined, nodejs, json to program, 变量作用域问题
- android - 华为站点套件返回错误代码 6
- android - kotlin - 从子活动更新 sharedPreferences 和刷新父活动的问题
- javascript - Google Apps 脚本错误消息:document.getElementById 不是函数
- html - 如何在CSS中整齐地将排名放在图片的左侧