我正在将一个相当大的monolith spring boot应用程序从Java 8迁移到Java 11。在修复了删除的JEE模块后,由于新引入的模块系统概念的强封装,我遇到了几个反射错误。
启动应用程序可以使用Java11,但是,通过Maven执行干净的安装不起作用。由于反射和强封装,由于无法访问对象异常导致了几个测试失败。
java.lang.reflect.无法将字段设为私有jdk.internal.reflect.方法访问jdk.internal.reflect.委托方法访问mpl.delegate:模块java.base不会打开jdk.internal.reflect到未命名的模块@6a969fb8在com......(一些测试方法)。
我已经尝试了那篇文章中建议的解决方案如何在Java9上解决不可用对象异常(无法使{成员}可访问:模块{A}不会将{包}打开到{B})。
但是使用参数add都不能打开java。基本/jdk。内部的reflect=ALL-UNNAMED为Maven参数,也不将其存储在Maven jvm中。配置帮助。
有没有其他方法可以消除这些例外?
您不应该将这些标志添加到maven本身,而是添加到您的测试配置中,因为测试可能在单独的jvm中运行:http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html
<argLine>
在命令行上设置的任意JVM选项。用户属性为:argLine。
或者,如果您正在使用其他测试插件,则使用其他类似于其他测试插件的标志。
请注意,您也可以通过根本不使用此内部API来修复其中一些问题,因此您应该先尝试一下。
这适用于Java8 但在Java11中,我得到了
我正在将一个项目从GF 3.1.2(Eclipselink2.3.2)迁移到Payara 4.1.1.162(Eclipselink2.6.2)。 在部署war存档时,我遇到以下异常:
在我的STS应用程序中实现Apache Ivy后收到以下控制台错误。 我添加了以下jar文件:
我有一个用于java程序的库。 它包含下一行: 它在java8上运行正常,但在我尝试在java11上启动它之后,我得到了ClassCastException JAVAClassCastException:类jdk。内部的加载器。ClassLoaders$AppClassLoader不能强制转换为java类。网URLClassLoader 有可能解决这个pb而不修改库吗?AFAIK,Java应该向下
Java(TM)SE运行时环境(构建1.8.0_102-B14) Java HotSpot(TM)64位服务器VM(构建25.102-B14,混合模式) 我知道jdk11不包含jre,但是我如何在java 11中从cmd运行java程序呢
我们正在从WAS 8.5(使用OpenJPA2.0,Hibernate4.2.x[last JPA2.0version])迁移到WAS 9.0(使用eclipseLink[last JPA2.1version])),除了一件事之外,迁移是成功的。 为了在服务器上多次部署同一个应用程序并针对不同的数据库运行,我们在中定义了一个变量引用: 对于WAS8.5/openJPA来说,这一切都很好。但是在使用