FULL PRODUCT VERSION :
java version "9-ea"
Java(TM) SE Runtime Environment (build 9-ea+152)
Java HotSpot(TM) Server VM (build 9-ea+152, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7601]
A DESCRIPTION OF THE PROBLEM :
The new option '--add-opens' is not handled in com.sun.deploy.config.Config, leading to run-time failure when reflective applications (using XStream, Hibernate, ...) are run
REGRESSION. Last worked in version 9
ADDITIONAL REGRESSION INFORMATION:
java version "9-ea"
Java(TM) SE Runtime Environment (build 9-ea+152)
Java HotSpot(TM) Server VM (build 9-ea+152, mixed mode)
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. Compile the given source file and put in a JAR file
2. Sign JAR file
3. Deploy as a webstart app with the given (unsigned) JNLP file
4. Run application
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
WebStart app should display "OK"
ACTUAL -
App crashes with an exception
ERROR MESSAGES/STACK TRACES THAT OCCUR :
java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.util.Comparator java.util.TreeMap.comparator accessible: module java.base does not "opens java.util" to unnamed module @1391280
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:207)
at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:171)
at java.base/java.lang.reflect.Field.setAccessible(Field.java:165)
at OpenModuleTest.main(OpenModuleTest.java:11)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:543)
at jdk.javaws@9-ea/com.sun.javaws.Launcher.executeApplication(Launcher.java:1738)
at jdk.javaws@9-ea/com.sun.javaws.Launcher.executeMainClass(Launcher.java:1674)
at jdk.javaws@9-ea/com.sun.javaws.Launcher.doLaunchApp(Launcher.java:1522)
at jdk.javaws@9-ea/com.sun.javaws.Launcher.run(Launcher.java:158)
at java.base/java.lang.Thread.run(Thread.java:844)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
OpenModuleTest.java
=================
package com.nexgenfs.core;
import java.lang.reflect.Field;
import java.util.Comparator;
import java.util.TreeMap;
public class OpenModuleTest {
public static void main(String[] args) {
for (Field field : TreeMap.class.getDeclaredFields()) {
if (field.getType() == Comparator.class) {
field.setAccessible(true);
break;
}
}
System.out.println("OK");
}
}
test.jnlp
=======
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="6.0+" codebase="http://www.example.com/webstart" href="test.jnlp">
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.8+" href="http://java.sun.com/products/autodl/j2se" initial-heap-size="64m" max-heap-size="384m" java-vm-args="-ea --add-modules=java.se.ee --add-opens=java.base/java.util=ALL-UNNAMED"/>
<jar href="test.jar" main="true"/>
</resources>
<application-desc main-class="OpenModuleTest"/>
</jnlp>
---------- END SOURCE ----------