Details
-
Bug
-
Resolution: Not an Issue
-
P4
-
None
-
8u301
-
generic
-
generic
Description
ADDITIONAL SYSTEM INFORMATION :
Windows 10
java version "1.8.0_301"
Java(TM) SE Runtime Environment (build 1.8.0_301-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.301-b09, mixed mode)
A DESCRIPTION OF THE PROBLEM :
The switch "-Duser.dir" doesn't set the working dir for the "-cp" argument and breaks it.
Using a relative path is sometimes necessary since only ANSI arguments are supported.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
For this file structure on Windows 10 :
%APPDATA%\MyApp
lib
myapp.jar
This works:
pushd "%APPDATA%\MyApp"
java -cp "lib\*" myapp.Main
but this fails with a ClassNotFoundException when "user.dir" is set :
pushd "%TEMP%"
java -Duser.dir="%APPDATA%\MyApp" -cp "lib\*" myapp.Main
It also fails with a ClassNotFoundException with the correct working dir but a different "user.dir" :
pushd "%APPDATA%\MyApp"
java -Duser.dir="%TEMP%" -cp "lib\*" myapp.Main
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The switch "-Duser.dir" should either set the working dir for the classpath or not break it.
ACTUAL -
Not only "-Duser.dir" does not set the working folder for "-cp",
it also breaks the loading of classes when "-cp" contains a relative path.
FREQUENCY : always
Windows 10
java version "1.8.0_301"
Java(TM) SE Runtime Environment (build 1.8.0_301-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.301-b09, mixed mode)
A DESCRIPTION OF THE PROBLEM :
The switch "-Duser.dir" doesn't set the working dir for the "-cp" argument and breaks it.
Using a relative path is sometimes necessary since only ANSI arguments are supported.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
For this file structure on Windows 10 :
%APPDATA%\MyApp
lib
myapp.jar
This works:
pushd "%APPDATA%\MyApp"
java -cp "lib\*" myapp.Main
but this fails with a ClassNotFoundException when "user.dir" is set :
pushd "%TEMP%"
java -Duser.dir="%APPDATA%\MyApp" -cp "lib\*" myapp.Main
It also fails with a ClassNotFoundException with the correct working dir but a different "user.dir" :
pushd "%APPDATA%\MyApp"
java -Duser.dir="%TEMP%" -cp "lib\*" myapp.Main
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The switch "-Duser.dir" should either set the working dir for the classpath or not break it.
ACTUAL -
Not only "-Duser.dir" does not set the working folder for "-cp",
it also breaks the loading of classes when "-cp" contains a relative path.
FREQUENCY : always