java - 当你有 jdk 1.8 代码时,你如何执行 maven 的 spring-boot:run?
问题描述
我实际上是在问这个问题,但spring-boot:run
目标是:如何通过 --add-opens JDK 模块配置来进行 Maven 测试
对于上下文,我正在尝试执行为 jdk16 中的 jdk1.8 编写的 spring-boot 1.5.1.RELEASE 代码。JDK 9 引入了模块的概念,这是一个向后不兼容的变化,尽管根据我的研究,看起来有一些变通方法。当我运行代码时,我收到此错误:
无法使受保护的最终 java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError 可访问:模块 java.base不会“打开 java.lang”到未命名的模块
我不想在这个旧项目中添加模块,而是希望通过对现有项目的最小修改来解决这个问题。在不添加模块的情况下运行我的应用程序需要做什么?我知道可行的一种解决方法是下载 JDK 8 并使用它运行代码,但这似乎不是一个好的解决方案。
解决方案
我想我找到了答案,但我想知道是否有更好的方法:
<build>
<finalName>project</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>--add-opens java.base/java.lang=ALL-UNNAMED</jvmArguments>
</configuration>
</plugin>
</plugins>
</build>
推荐阅读
- c# - 生产服务器上的 Microsoft Edge 兼容性
- spring-batch - Spring Batch JdbcPagingItemReader 按两列/键排序
- javascript - 使用 React 和 VS Code 导入模块
- swift - 如何在 Xcode 中将标签更改为按钮
- javascript - 如何使用 onclick() 删除列表项
- javascript - 如何从 laravel 下载文件
- r - 如何将值分配给具有唯一值的行?
- serialization - Micronaut 可选枚举查询参数
- reactjs - React Router 渲染错误的组件
- java - 我可以在我的 android 应用程序中访问我的字体目录。我在某处读到有权限问题,或者我必须使用 maven 构建我的应用程序