Details
-
Type:
Enhancement
-
Status: Closed
-
Priority:
P4
-
Resolution: Incomplete
-
Affects Version/s: 8
-
Fix Version/s: None
-
Component/s: core-libs
-
Subcomponent:
-
CPU:x86
-
OS:os_x
Description
ADDITIONAL SYSTEM INFORMATION :
MacOS Mojave (10.14.6)
Test on
JDK1.8.0_192
JDK 9
JDK 10.0.2
JDK 11.0.2
JDK 12.0.2
JDK 13 (build 13+33)
A DESCRIPTION OF THE PROBLEM :
Launching an executable jar with -jar fails when a required jar on the class-path is a symlink. However executing the same program using -cp succeeds.
myApp.jar (contains main method)
manifest file contains class-path variable that points to myLib.jar
myLib.jar (must be on the class-path)
When myLib.jar is a symlink the following error occur when launching the jar using java -jar
Error: Unable to initialize main class ...
(for JDK 9, JDK 10.0.2 JDK 11.0.2, JDK 12.0.2, JDK 13 (build 13+33))
Error: A JNI error has occured, please check your installation and try again
(for JDK1.8.0_192)
These errors do not occur if any one of the follow holds true:
1) The symlink is replace with the actual jar file.
or
2) The app is launched without -jar and using -cp to point to myLib.jar. Using -cp the JVM follows the symlink without issue.
It would be nice if the JVM resolved class-path dependencies in jar manifest the same way it does with command line option -cp. This includes resolving 1) symlinks and 2) wildcard paths
MacOS Mojave (10.14.6)
Test on
JDK1.8.0_192
JDK 9
JDK 10.0.2
JDK 11.0.2
JDK 12.0.2
JDK 13 (build 13+33)
A DESCRIPTION OF THE PROBLEM :
Launching an executable jar with -jar fails when a required jar on the class-path is a symlink. However executing the same program using -cp succeeds.
myApp.jar (contains main method)
manifest file contains class-path variable that points to myLib.jar
myLib.jar (must be on the class-path)
When myLib.jar is a symlink the following error occur when launching the jar using java -jar
Error: Unable to initialize main class ...
(for JDK 9, JDK 10.0.2 JDK 11.0.2, JDK 12.0.2, JDK 13 (build 13+33))
Error: A JNI error has occured, please check your installation and try again
(for JDK1.8.0_192)
These errors do not occur if any one of the follow holds true:
1) The symlink is replace with the actual jar file.
or
2) The app is launched without -jar and using -cp to point to myLib.jar. Using -cp the JVM follows the symlink without issue.
It would be nice if the JVM resolved class-path dependencies in jar manifest the same way it does with command line option -cp. This includes resolving 1) symlinks and 2) wildcard paths