You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Andreas Sewe (JIRA)" <ji...@apache.org> on 2010/09/22 11:45:33 UTC

[jira] Commented: (HARMONY-6535) Compiling the Scala library against the Harmony JRE doesn't work

    [ https://issues.apache.org/jira/browse/HARMONY-6535?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12913478#action_12913478 ] 

Andreas Sewe commented on HARMONY-6535:
---------------------------------------

While the Map.Entry itself is the same in both the Linux and Windows JREs, digging a little bit further revealed an oddity in both WeakHashMap and IdentityHashMap: The Linux WeakHashMap classfile contains a InnerClass entry not present in its Windows counterpart. The following is straight from javap -verbose:

    InnerClass: 
+    public abstract #178= #176 of #5; //Entry=class java/util/Map$Entry of class java/util/Map
     #94; //class java/util/WeakHashMap$1
     #104; //class java/util/WeakHashMap$2
     #114; //class java/util/WeakHashMap$3
!    final #178= #26 of #1; //Entry=class java/util/WeakHashMap$Entry of class java/util/WeakHashMap
!    #181= #179 of #1; //HashIterator=class java/util/WeakHashMap$HashIterator of class java/util/WeakHashMap

In a similar vein, IdentityHashMap is missing an InnterClass entry in the Windows version:

    InnerClass: 
     #139; //class java/util/IdentityHashMap$1
     #149; //class java/util/IdentityHashMap$2
     #237= #99 of #1; //IdentityHashMapEntry=class java/util/IdentityHashMap$IdentityHashMapEntry of class java/util/IdentityHashMap
     #238= #129 of #1; //IdentityHashMapEntrySet=class java/util/IdentityHashMap$IdentityHashMapEntrySet of class java/util/IdentityHashMap
     #241= #239 of #1; //IdentityHashMapIterator=class java/util/IdentityHashMap$IdentityHashMapIterator of class java/util/IdentityHashMap
+    public abstract #244= #242 of #5; //Entry=class java/util/Map$Entry of class java/util/Map

I think the missing entry might be what's leading the Scala compiler astray.

> Compiling the Scala library against the Harmony JRE doesn't work
> ----------------------------------------------------------------
>
>                 Key: HARMONY-6535
>                 URL: https://issues.apache.org/jira/browse/HARMONY-6535
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>    Affects Versions: 6.0M1
>         Environment: Linux 2.6.31-21-generic #59-Ubuntu SMP Wed Mar 24 07:28:56 UTC 2010 i686 GNU/Linux
>            Reporter: Andreas Sewe
>            Assignee: Mark Hindess
>
> Please note: I am unsure whether this is a bug within the Scala compiler or less than perfect Java SE 6 compatibility on Harmony's part.
> To reproduce the bug/incompatibility compile WeakHashMap.scala from the Scala library (version 2.8.0.RC3) against the Apache Harmony 6.0M1 JRE, with CLASSPATH set to the .jars in the Harmony distribution:
> > ./bin/scalac -version
> Scala compiler version 2.8.0.RC3 -- Copyright 2002-2010, LAMP/EPFL
> > ./bin/scalac -javabootclasspath $CLASSPATH ../scala/src/library/scala/collection/mutable/WeakHashMap.scala 
> error: error while loading WeakHashMap, Missing dependency 'class java.util.Map$Entry', required by /usr/lib/harmony-6.0/jdk/jre/lib/boot/luni.jar(java/util/WeakHashMap.class)
> error: error while loading AbstractMap, Missing dependency 'class java.util.Map$Entry', required by /usr/lib/harmony-6.0/jdk/jre/lib/boot/luni.jar(java/util/AbstractMap.class)
> error: error while loading Hashtable, Missing dependency 'class java.util.Map$Entry', required by /usr/lib/harmony-6.0/jdk/jre/lib/boot/luni.jar(java/util/Hashtable.class)
> three errors found
> For some reason, scalac, the Scala compiler, is unable to track down the Entry class. I suspect that there is some subtle difference between Harmony's classes and those of the Sun JDK.

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