You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Pavel Pervov (JIRA)" <ji...@apache.org> on 2007/07/18 14:42:05 UTC

[jira] Commented: (HARMONY-4043) [classlib][luni]Unexpected error message printed in console when searching custom system class loader in missing jar

    [ https://issues.apache.org/jira/browse/HARMONY-4043?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12513548 ] 

Pavel Pervov commented on HARMONY-4043:
---------------------------------------

The problem is in org.apache.harmony.<module>.internal.nls.Messages.java classes which have the same construct in their setLocale methods:
------------------------------
            final ClassLoader loader = VM.bootCallerClassLoader();
            return (ResourceBundle) AccessController
                    .doPrivileged(new PrivilegedAction<Object>() {
                        public Object run() {
                            return ResourceBundle.getBundle(resource, locale,
                                    loader != null ? loader : ClassLoader.getSystemClassLoader());
                        }
                    });
------------------------------
As DRLVM do not have java object for bootstrap class loader, VM.bootCallerClassLoader() returns null and a call to ClassLoader.getSystemClassLoader() is being made. Semantically, these two are different calls and return different class loaders with different available classes.

I couldn't construct the way to force ResourceBundle to get bundle from bootstrap class loader - this is what required in the context of this method.

> [classlib][luni]Unexpected error message printed in console when searching custom system class loader in missing jar
> --------------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-4043
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4043
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>            Reporter: Sergey Salishev
>            Priority: Minor
>
> When running drlvm the following command line:
> java -classpath dummy.jar;. -Djava.system.class.loader=ClassLoader bla
> the following exception is printed in console:
> java.lang.IllegalStateException: Recursive invocation while initializing system class loader
>         at java.lang.ClassLoader.initSystemClassLoader(ClassLoader.java:667)
>         at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:159)
>         at org.apache.harmony.luni.util.MsgHelp$1.run(MsgHelp.java:115)
>         at java.security.AccessController.doPrivilegedImpl(AccessController.java:171)
>         at java.security.AccessController.doPrivileged(AccessController.java:53)
>         at org.apache.harmony.luni.util.MsgHelp.setLocale(MsgHelp.java:112)
>         at org.apache.harmony.luni.util.Msg.<clinit>(Msg.java:49)
>         at org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection.findJarFile(JarURLConnection.java:196)
>         at org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:161)
>         at org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection.getJarFile(JarURLConnection.java:178)
>         at java.net.URLClassLoader.findClassImpl(URLClassLoader.java:1078)
>         at java.net.URLClassLoader$4.run(URLClassLoader.java:625)
>         at java.net.URLClassLoader$4.run(URLClassLoader.java:1)
>         at java.security.AccessController.doPrivilegedImpl(AccessController.java:171)
>         at java.security.AccessController.doPrivileged(AccessController.java:64)
>         at java.net.URLClassLoader.findClass(URLClassLoader.java:627)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:570)
>         at java.lang.ClassLoader$SystemClassLoader.loadClass(ClassLoader.java:958)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:317)
>         at java.lang.ClassLoader.initSystemClassLoader(ClassLoader.java:699)
>         at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:159) 
> Here dummy.jar is noexistent and ClassLoader is any custom class loader class.
> If ClassLoader also doesn't exist the VM crashes with this command line. But the error message is peinted anyway.
> If the class loader class exists the execution continues as expected.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.