-
Bug
-
Resolution: Won't Fix
-
P3
-
6u10
-
x86
-
windows_vista
If -Duser.home point to a directory that has a extremely long name, kerneljre thrown "java.io.IOException: unable to rename" and "Error downloading bundle"
Test run with:
java version "1.6.0_10-ea"
Java(TM) SE Runtime Environment (build 1.6.0_10-ea-b07)
Java HotSpot(TM) Client VM (build 1.6.0_10-ea-b07, mixed mode)
Steps to reproduce:
1. Install the kernel jre "*windows-i586-p-iftw-k.exe"
2. Make sure run the test from kerneljre's "initial form"
(either immediately(before Kernel has time to finish background downloading)run test after install, or perform step 3 4)
(optinal)3. Kill the background download ( by killing the "java" process )
(optinal)4. Remove all files under ${ProgramFiles}/Java/jre6/lib/bundles/
5. Create a dir with a long name, for example
c:/temp/this_is_a_test_for_kerneljre_bug_reproduce_long_filename_can_not_used_as_userhome_on_vista_jsn_6.0_UR_int-pit_sec_kerneljre_6.0_U_test_for_kerneljre_bug_reproduce
6. Run a app that require additional components with -Duser.home=a_long_filename
"java.io.IOException: unable to rename" and "Error downloading bundle" thrown
( If follow the same steps, run the same app with -Duser.home=a_short_filename, no exception and error )
Any app that require additional components can reproduce the issue,
in my case, for example((BindLoopback.java attached)):
"${JAVA_HOME}/bin/java" \
-Duser.home=C:/temp/this_is_a_test_for_kerneljre_bug_reproduce_long_filename_can_not_used_as_userhome_on_vista_jsn_6.0_UR_int-pit_sec_kerneljre_6.0_U_test_for_kerneljre_bug_reproduce \
BindLoopback
Error downloading bundle for java/net/InetAddress.class:
java.io.IOException: unable to rename C:\temp\this_is_a_test_for_kerneljre_bug_reproduce_long_filename_can_not_used_as_userhome_on_vista_jsn_6.0_UR_int-pit_sec_kerneljre_6.0_U_test_for_kerneljre_bug_reproduce\appdata\locallow\kerneljre1.6.0_10-eajava_net\lib\bundles\java_net.jar.tmp to C:\temp\this_is_a_test_for_kerneljre_bug_reproduce_long_filename_can_not_used_as_userhome_on_vista_jsn_6.0_UR_int-pit_sec_kerneljre_6.0_U_test_for_kerneljre_bug_reproduce\appdata\locallow\kerneljre1.6.0_10-eajava_net\lib\bundles\java_net.jar
at sun.jkernel.Bundle.unpackBundle(Unknown Source)
at sun.jkernel.Bundle.install(Unknown Source)
at sun.jkernel.Bundle.install(Unknown Source)
at sun.jkernel.DownloadManager.doGetBootClassPathEntryForResource(Unknown Source)
at sun.jkernel.DownloadManager.access$500(Unknown Source)
at sun.jkernel.DownloadManager$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.jkernel.DownloadManager.getBootClassPathEntryForResource(Unknown Source)
at sun.jkernel.DownloadManager.getBootClassPathEntryForClass(Unknown Source)
at java.lang.ClassLoader.findBootstrapClass(Native Method)
at java.lang.ClassLoader.findBootstrapClass0(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at BindLoopback.main(BindLoopback.java:21)
Error downloading bundle for java/net/InetAddress.class:
java.io.FileNotFoundException: C:\temp\this_is_a_test_for_kerneljre_bug_reproduce_long_filename_can_not_used_as_userhome_on_vista_jsn_6.0_UR_int-pit_sec_kerneljre_6.0_U_test_for_kerneljre_bug_reproduce\appdata\locallow\kerneljre1.6.0_10-ea-bundles\java_net.zip (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at sun.jkernel.Bundle.unpackBundle(Unknown Source)
at sun.jkernel.Bundle.install(Unknown Source)
at sun.jkernel.Bundle.install(Unknown Source)
at sun.jkernel.DownloadManager.doGetBootClassPathEntryForResource(Unknown Source)
at sun.jkernel.DownloadManager.access$500(Unknown Source)
at sun.jkernel.DownloadManager$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.jkernel.DownloadManager.getBootClassPathEntryForResource(Unknown Source)
at sun.jkernel.DownloadManager.getBootClassPathEntryForClass(Unknown Source)
at sun.misc.Launcher$ExtClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at BindLoopback.main(BindLoopback.java:21)
Exception in thread "main" java.lang.NoClassDefFoundError: java/net/InetAddress
at BindLoopback.main(BindLoopback.java:21)
Caused by: java.lang.ClassNotFoundException: java.net.InetAddress
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
... 1 more
( If follow the same steps, run the same app with -Duser.home=a_short_filename, the test pass as expected)
Test run on Windows Vista Enterprise 32-bit Operating System
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 15 Model 3 Stepping 4, GenuineIntel
The "NtfsDisable8dot3NameCreation" value is 0 in registry, and no problem to rename or delete a dir/file with such long filename in command line.
Test run with:
java version "1.6.0_10-ea"
Java(TM) SE Runtime Environment (build 1.6.0_10-ea-b07)
Java HotSpot(TM) Client VM (build 1.6.0_10-ea-b07, mixed mode)
Steps to reproduce:
1. Install the kernel jre "*windows-i586-p-iftw-k.exe"
2. Make sure run the test from kerneljre's "initial form"
(either immediately(before Kernel has time to finish background downloading)run test after install, or perform step 3 4)
(optinal)3. Kill the background download ( by killing the "java" process )
(optinal)4. Remove all files under ${ProgramFiles}/Java/jre6/lib/bundles/
5. Create a dir with a long name, for example
c:/temp/this_is_a_test_for_kerneljre_bug_reproduce_long_filename_can_not_used_as_userhome_on_vista_jsn_6.0_UR_int-pit_sec_kerneljre_6.0_U_test_for_kerneljre_bug_reproduce
6. Run a app that require additional components with -Duser.home=a_long_filename
"java.io.IOException: unable to rename" and "Error downloading bundle" thrown
( If follow the same steps, run the same app with -Duser.home=a_short_filename, no exception and error )
Any app that require additional components can reproduce the issue,
in my case, for example((BindLoopback.java attached)):
"${JAVA_HOME}/bin/java" \
-Duser.home=C:/temp/this_is_a_test_for_kerneljre_bug_reproduce_long_filename_can_not_used_as_userhome_on_vista_jsn_6.0_UR_int-pit_sec_kerneljre_6.0_U_test_for_kerneljre_bug_reproduce \
BindLoopback
Error downloading bundle for java/net/InetAddress.class:
java.io.IOException: unable to rename C:\temp\this_is_a_test_for_kerneljre_bug_reproduce_long_filename_can_not_used_as_userhome_on_vista_jsn_6.0_UR_int-pit_sec_kerneljre_6.0_U_test_for_kerneljre_bug_reproduce\appdata\locallow\kerneljre1.6.0_10-eajava_net\lib\bundles\java_net.jar.tmp to C:\temp\this_is_a_test_for_kerneljre_bug_reproduce_long_filename_can_not_used_as_userhome_on_vista_jsn_6.0_UR_int-pit_sec_kerneljre_6.0_U_test_for_kerneljre_bug_reproduce\appdata\locallow\kerneljre1.6.0_10-eajava_net\lib\bundles\java_net.jar
at sun.jkernel.Bundle.unpackBundle(Unknown Source)
at sun.jkernel.Bundle.install(Unknown Source)
at sun.jkernel.Bundle.install(Unknown Source)
at sun.jkernel.DownloadManager.doGetBootClassPathEntryForResource(Unknown Source)
at sun.jkernel.DownloadManager.access$500(Unknown Source)
at sun.jkernel.DownloadManager$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.jkernel.DownloadManager.getBootClassPathEntryForResource(Unknown Source)
at sun.jkernel.DownloadManager.getBootClassPathEntryForClass(Unknown Source)
at java.lang.ClassLoader.findBootstrapClass(Native Method)
at java.lang.ClassLoader.findBootstrapClass0(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at BindLoopback.main(BindLoopback.java:21)
Error downloading bundle for java/net/InetAddress.class:
java.io.FileNotFoundException: C:\temp\this_is_a_test_for_kerneljre_bug_reproduce_long_filename_can_not_used_as_userhome_on_vista_jsn_6.0_UR_int-pit_sec_kerneljre_6.0_U_test_for_kerneljre_bug_reproduce\appdata\locallow\kerneljre1.6.0_10-ea-bundles\java_net.zip (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at sun.jkernel.Bundle.unpackBundle(Unknown Source)
at sun.jkernel.Bundle.install(Unknown Source)
at sun.jkernel.Bundle.install(Unknown Source)
at sun.jkernel.DownloadManager.doGetBootClassPathEntryForResource(Unknown Source)
at sun.jkernel.DownloadManager.access$500(Unknown Source)
at sun.jkernel.DownloadManager$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.jkernel.DownloadManager.getBootClassPathEntryForResource(Unknown Source)
at sun.jkernel.DownloadManager.getBootClassPathEntryForClass(Unknown Source)
at sun.misc.Launcher$ExtClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at BindLoopback.main(BindLoopback.java:21)
Exception in thread "main" java.lang.NoClassDefFoundError: java/net/InetAddress
at BindLoopback.main(BindLoopback.java:21)
Caused by: java.lang.ClassNotFoundException: java.net.InetAddress
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
... 1 more
( If follow the same steps, run the same app with -Duser.home=a_short_filename, the test pass as expected)
Test run on Windows Vista Enterprise 32-bit Operating System
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 15 Model 3 Stepping 4, GenuineIntel
The "NtfsDisable8dot3NameCreation" value is 0 in registry, and no problem to rename or delete a dir/file with such long filename in command line.