In Java 8 and prior there exists the mechanism to use an endorsed directory(java.endorsed.dirs), which is a collection of libraries which overrides JDK internal implementations.
How can I solve this in Java-9? As endorsed dirs where removed there?
In Windows, open the QIE Service Manager, and click the Startup tab. In the Arguments section remove the highlighted line below (which contains the -Djava. endorsed. dirs), then click Apply.
endorsed. dirs specifies one or more directories that the Java runtime environment will search for such JAR files. If more than one directory path is specified by java.
In JDK 9, you can use upgradeable modules or put the JAR files on the classpath.
The Java 9 migration guide states:
The
java.endorsed.dirs
system property and thelib/endorsed
directory are no longer present. Thejavac
compiler andjava
launcher will exit if either one is detected.
You would end up finding the error if any of these exists as :
<JAVA_HOME>/lib/endorsed is not supported. Endorsed standards and standalone APIs in modular form will be supported via the concept of upgradeable modules. Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.
These endorsed-standards override mechanism was removed to attain Modular Run-Time Images and would now use the modular image.
A modular image is composed of modules rather than JAR files. Going forward, endorsed standards and standalone APIs are supported in modular form only, via the concept of upgradeable modules.
This is a specific solution but can probably be generalized. On System Version: macOS 10.14.6 (18G3020) Kernel Version: Darwin 18.7.0 I have OpenJDK 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing) and java_ee_sdk-8u1 installed.
I encountered this error when executing xjc:
[foo@bar bin 14:47:27] sudo ./xjc -Djava.endorsed.dirs=./../modules/endorsed is not supported. Endorsed standards and standalone APIs in modular form will be supported via the concept of upgradeable modules. Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.enter code here
I edited the last line in ~/glassfish5/glassfish/bin/xjc
to remove the -Djava.endorsed.dirs
bit: BEFORE
exec "$JAVA" -Djava.endorsed.dirs="$AS_INSTALL_LIB/endorsed" -cp "$AS_INSTALL_LIB/webservices-osgi.jar:$AS_INSTALL_LIB/javax.xml.rpc-api.jar:$AS_INSTALL_LIB/jaxb-osgi.jar" com.sun.tools.xjc.Driver "$@"
AFTER
exec "$JAVA" -cp "$AS_INSTALL_LIB/webservices-osgi.jar:$AS_INSTALL_LIB/javax.xml.rpc-api.jar:$AS_INSTALL_LIB/jaxb-osgi.jar" com.sun.tools.xjc.Driver "$@"
After which ~/glassfish5/glassfish/bin/xjc
worked as expected
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With