Fail to look for a resource bundle that is in jdk.boot module

Mandy Chung Mandy.Chung at Sun.COM
Sat Jan 23 14:10:15 PST 2010


I think I find the cause of the issue (when learning the jmod show option)

The context of jdk.javac module is:

> jdk-module-image/bin/jmod show jdk.javac
configuration roots = [jdk.javac at 7-ea]
  context +jdk.javac+jdk.langtools+jdk.logging [jdk.javac at 7-ea, jdk.logging at 7-ea, jdk.langtools at 7-ea]

I guess it's considered as boot context only when it 
requires jdk.boot.  I will workaround it and see if 
it resolves the problem.

Mandy


Mandy Chung wrote:
> Hi Mark,
>
> I have made some good progress in creating the jdk base
> image and also the entire jdk image.  All jdk modules
> are installed successfully on jigsaw on all platforms.
> Running org.openjdk.jigsaw.Hi works!
>
>> jdk-module-image/bin/java -m jdk.base
> The JDK boot module is brought to you by the letter 'J' and the number 7.
>
>> jre-base-image/bin/java -m jdk.base
> The JDK boot module is brought to you by the letter 'J' and the number 7.
>
> I now run into two different issues. 
> In the module mode, I run into a missing resource exception where it 
> fails to find a resource bundle that exists.  
> sun.launcher.resources.launcher is a compiled class installed in the 
> jdk.boot module.
>
>> ls 
>> jdk-module-image/lib/modules/jdk.boot/7-ea/classes/sun/launcher/resources/launcher.class 
>>
>
>> jdk-module-image/bin/java -m jdk.javac
> Exception in thread "main" java.lang.ExceptionInInitializerError
>        at 
> sun.launcher.LauncherHelper.getLocalizedMessage(LauncherHelper.java:71)
>        at 
> sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:211)
> Caused by: java.util.MissingResourceException: Can't find bundle for 
> base name sun.launcher.resources.launcher, locale en
>        at 
> java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1539) 
>
>        at 
> java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1278)
>        at java.util.ResourceBundle.getBundle(ResourceBundle.java:733)
>        at 
> sun.launcher.LauncherHelper$ResourceBundleHolder.<clinit>(LauncherHelper.java:59) 
>
>        ... 2 more
>
> Is there anything look suspicious to you? ResourceBundle uses
> its own RBClassLoader to find resources.  Is it considered
> as legacy mode?  Even it's legacy mode, it should be able to
> find it since it's in the jdk.boot module.
>
> How does the module loader find a resource file different
> than the legacy class loader?  I just suspect this is class
> loader issue.
>
> The module-info for jdk.javac module is:
>
>> jdk.javac/module-info.java 
> module jdk.javac @ 7-ea {
>    requires local public jdk.langtools @ 7-ea;
>    requires local public jdk.logging @ 7-ea;
>    permits jdk, jdk.tools;
>    class org.openjdk.jigsaw.Hi;  // ## Testing
> }
>
> In the legacy mode, it loads sun.launcher.LauncherHelper
> and finds the resource as the jdk.boot classes/resources
> are added in the bootclasspath.  But I got a NoClassDefFoundError 
> instead that the app classloader can't find com.sun.tools.javac.Main 
> from the jdk.javac module.  I know that the hotspot bootclasspath
> is just temporary workaround for the boot classes but not for all jdk 
> modules.  But looks like we need a solution
> soon.
>
>> jdk-module-image/bin/javac -version
>
> Error: Could not find main class com.sun.tools.javac.Main
> Exception in thread "main" java.lang.NoClassDefFoundError: 
> com.sun.tools.javac.Main
>        at 
> sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:213)
> Caused by: java.lang.ClassNotFoundException: com.sun.tools.javac.Main
>        at java.net.URLClassLoader$1.run(URLClassLoader.java:299)
>        at java.net.URLClassLoader$1.run(URLClassLoader.java:288)
>        at java.security.AccessController.doPrivileged(Native Method)
>        at java.net.URLClassLoader.findClass(URLClassLoader.java:287)
>        at java.lang.ClassLoader.loadClass(ClassLoader.java:422)
>        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:325)
>        at java.lang.ClassLoader.loadClass(ClassLoader.java:355)
>        at 
> sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:209)
>
>> ls 
>> jdk-module-image/lib/modules/jdk.javac/7-ea/classes/com/sun/tools/javac/Main.class 
>>
>
> I'll continue to dig into this further.  Any thoughts
> or hints to diagnose these issues would be appreciated.
>
> Thanks
> Mandy
>




More information about the jigsaw-dev mailing list