Ria*_*ouz 5 java hibernate java-9
我正在尝试使用 hibernate 生成 ORM 我正在使用 oracle 11g 数据库,并且在进行 hibernate 代码生成配置后收到此错误
java.lang.reflect.InaccessibleObjectException: Unable to make field java.util.ArrayList jdk.internal.loader.URLClassPath.loaders accessible: module java.base does not "opens jdk.internal.loader" to unnamed module @6a75c1c8
Unable to make field java.util.ArrayList jdk.internal.loader.URLClassPath.loaders accessible: module java.base does not "opens jdk.internal.loader" to unnamed module @6a75c1c8
java.lang.reflect.InaccessibleObjectException: Unable to make field java.util.ArrayList jdk.internal.loader.URLClassPath.loaders accessible: module java.base does not "opens jdk.internal.loader" to unnamed module @6a75c1c8
Unable to make field java.util.ArrayList jdk.internal.loader.URLClassPath.loaders accessible: module java.base does not "opens jdk.internal.loader" to unnamed module @6a75c1c8
Run Code Online (Sandbox Code Playgroud)
这是我的 Hibernate.cfg.xml :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.password">compte</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="hibernate.connection.username">compte</property>
<property name="hibernate.default_schema">COMPTE</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
</session-factory>
</hibernate-configuration>
Run Code Online (Sandbox Code Playgroud)
如果您的类路径上有一个类型尝试访问jdk.internal.loader.URLClassPathJDK 中用作内部类并且专门导出到java.desktop,java.instrument并且java.logging仅导出,则该异常似乎是合理的。
关于未命名模块的更多信息:-
未命名的模块读取所有其他模块。因此,从类路径加载的任何类型的代码都将能够访问所有其他可读模块的导出类型,默认情况下,这些模块将包括所有 命名的内置平台模块。
访问包(类所在的包)的另一种方法是使用 VM args ::
--add-opens java.base/jdk.internal.loader=ALL-UNNAMED
Run Code Online (Sandbox Code Playgroud)
jdk.internal.loader这将通过向所有未命名模块打开模块内的包来增加可读性java.base。
但理想情况下,应该提出/达成一个解决方案,以不再打开内部包来访问这样的类,当您查看此错误的来源时,这会更清楚。