Sun JDK specific constants prevents Felix running on Harmony
------------------------------------------------------------

                 Key: FELIX-358
                 URL: https://issues.apache.org/jira/browse/FELIX-358
             Project: Felix
          Issue Type: Bug
         Environment: Ubuntu,  Felix trunk, Harmony trunk
            Reporter: Paulex Yang


There are two constants defined in 
framework/src/main/java/org/apache/felix/framework/URLHandlers.java, which are 
Sun JDK specific value, and prevent Felix running on Harmony, as below:
    private static final String DEFAULT_STREAM_HANDLER_PACKAGE = 
"sun.net.www.protocol";
    private static final String DEFAULT_CONTENT_HANDLER_PACKAGE = 
"sun.net.www.content";

Change it to 
    private static final String DEFAULT_STREAM_HANDLER_PACKAGE = 
"org.apache.harmony.luni.internal.net.www.protocol";
    private static final String DEFAULT_CONTENT_HANDLER_PACKAGE = 
"org.apache.harmony.luni.internal.net.www.content";

Make Felix running smoothly on Harmony, but I really don't think use one 
implementation specific value to replace another one is a good idea, so I still 
haven't find a solution yet.

Procedure to reproduce:
1. Download a Harmony JDK or JRE build from 
http://harmony.apache.org/downloads.html
2. Check out Felix trunk and build via mvn
3. Start up felix via Harmony's java launcher: <Harmony root>/jre/bin/java -jar 
felix.jar
4. input a profile name like "test" when felix challenges one
5. return and you'll get an endless stacktrace like below:

......
        at java.net.URLClassLoader.findClass(URLClassLoader.java:885)
        at 
com.ibm.oti.vm.URLSystemClassLoader.findClass(URLSystemClassLoader.java:27)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:637)
        at 
com.ibm.oti.vm.URLSystemClassLoader.loadClass(URLSystemClassLoader.java:60)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:594)
        at java.lang.Class.forNameImpl(Native Method)
        at java.lang.Class.forName(Class.java:129)
        at 
org.apache.felix.framework.util.SecureAction.forName(SecureAction.java:16)
        at 
org.apache.felix.framework.URLHandlers.createURLStreamHandler(URLHandlers.java:165)
        at java.net.URL.setupStreamHandler(URL.java:587)
        at java.net.URL.<init>(URL.java:443)
        at java.net.URLClassLoader$URLHandler.targetURL(URLClassLoader.java:293)
        at java.net.URLClassLoader$URLHandler.findClass(URLClassLoader.java:220)
        at java.net.URLClassLoader.findClassImpl(URLClassLoader.java:1193)
        at java.net.URLClassLoader$4.run(URLClassLoader.java:888)
        at java.net.URLClassLoader$4.run(URLClassLoader.java:1)
        at java.security.AccessController.doPrivileged(AccessController.java:21)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:885)
        at 
com.ibm.oti.vm.URLSystemClassLoader.findClass(URLSystemClassLoader.java:27)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:637)
        at 
com.ibm.oti.vm.URLSystemClassLoader.loadClass(URLSystemClassLoader.java:60)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:594)
        at java.lang.Class.forNameImpl(Native Method)
        at java.lang.Class.forName(Class.java:129)
        at 
org.apache.felix.framework.util.SecureAction.forName(SecureAction.java:16)
        at 
org.apache.felix.framework.URLHandlers.createURLStreamHandler(URLHandlers.java:165)
        at java.net.URL.setupStreamHandler(URL.java:587)
        at java.net.URL.<init>(URL.java:321)
        at java.net.URL.<init>(URL.java:155)
        at 
org.apache.felix.framework.cache.JarRevision.initialize(JarRevision.java:294)
        at 
org.apache.felix.framework.cache.JarRevision.<init>(JarRevision.java:90)
        at 
org.apache.felix.framework.cache.JarRevision.<init>(JarRevision.java:68)
        at 
org.apache.felix.framework.cache.BundleArchive.createRevisionFromLocation(BundleArchive.java:179)
        at 
org.apache.felix.framework.cache.BundleArchive.revise(BundleArchive.java:79)
        at 
org.apache.felix.framework.cache.BundleArchive.<init>(BundleArchive.java:146)
        at 
org.apache.felix.framework.cache.BundleCache.create(BundleCache.java:147)
        at org.apache.felix.framework.Felix.installBundle(Felix.java:2180)
        at org.apache.felix.framework.Felix.installBundle(Felix.java:2138)
        at 
org.apache.felix.framework.Felix.processAutoProperties(Felix.java:3664)
        at org.apache.felix.framework.Felix.start(Felix.java:83)
        at org.apache.felix.main.Main.main(Main.java:195)
        at java.lang.reflect.AccessibleObject.invokeV(AccessibleObject.java:25)
        at java.lang.reflect.Method.invoke(Method.java:258)
        at com.ibm.oti.vm.JarRunner.main(JarRunner.java:42)


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

Reply via email to