Hi Mohan, I have tested the same patch as you, it crashes on drlvm but works well on j9vm. Please try it. Thanks a lot!
2010/9/24 Mohanraj Loganathan <mohanra...@gmail.com> > Hi Deven, > > I followed your steps 1 & 2. But java -version crashes with Harmony5.0 > > Attaching the out file of java -version. > > Thanks and Regards, > Mohan > > > 2010/9/24 Deven You <devyo...@gmail.com>: > > I have saw the error before, and I have some investigation of it. I think > > the root cause is the commit change the class load order. Before this > > commit, Locale class will be loaded before ULocale class And after this > > commit, ULocale is loaded before Locale. > > > > The direct cause is CharsetProviderImpl no longer use String.toUpperCase, > > instead it uses its own toUpperCase. And String.toUpperCase calls > > String.toUpperCase(Locale), this ensure Locale class will be loaded > before > > ULocale. However CharsetProviderImpl own toUpperCase uses no Locale, so > it > > causes Locale class loaded after ULocale. > > > > To solve this problem, a work around could simply be below: > > 1.Add a Locale static field in String: > > private static Locale defaulLocale = new Locale.getDefaultLocale(); > > ... > > 2. Change the String.toUpperCase() from calling > > toUpperCase(Locale.getDefaultLocale()) to toUpperCase(defaultLocale) > > > > above change could solve the NullPointerException mentioned by Mohan, but > I > > am not sure if it is a good design. > > > > Caused by: java.lang.NullPointerException > > at com.ibm.icu.util.ULocale.getName(ULocale.java:827) > > at com.ibm.icu.util.ULocale.<init>(ULocale.java:480) > > at java.util.Locale.<init>(Locale.java:228) > > at java.util.Locale.<init>(Locale.java:201) > > at java.util.Locale.<clinit>(Locale.java:51) > > at com.ibm.icu.util.ULocale.<clinit>(ULocale.java:109) > > > > > > > > > > > > 2010/9/24 Mohanraj Loganathan <mohanra...@gmail.com> > > > >> On loading junit.jar[2] i get initialization exception[3]. This > >> exception disappears if i revert the patch committed for > >> (HARMONY-6649) toUpper/toLowerCase. > >> > >> Make sure your junit.jar contains the signature files[1]. (use the > >> junit.jar(version 3.8.2) bundled with eclipse). So with HARMONY-6649 > >> commit, I am not able to load the jar file if it's manifest contains > >> any signature related files. Any thought on this? > >> > >> > >> [1] jar -tvf junit.jar > >> 9714 Thu Aug 07 12:04:14 GMT+05:30 2008 META-INF/MANIFEST.MF > >> 9791 Thu Aug 07 12:04:14 GMT+05:30 2008 META-INF/ECLIPSE.SF > >> 3487 Thu Aug 07 12:04:14 GMT+05:30 2008 META-INF/ECLIPSE.RSA > >> 0 Fri Mar 03 15:22:26 GMT+05:30 2006 META-INF/ > >> 76 Thu Aug 07 12:04:08 GMT+05:30 2008 META-INF/eclipse.inf > >> 0 Fri Mar 03 15:22:10 GMT+05:30 2006 junit/ > >> 0 Fri Mar 03 15:22:26 GMT+05:30 2006 junit3.8.2/ > >> 0 Fri Mar 03 15:22:24 GMT+05:30 2006 junit/awtui/ > >> ............ > >> > >> [2] run command : java -cp junit.jar junit.textui.TestRunner > >> > >> [3] Exception: > >> Uncaught exception in main: > >> java.lang.ExceptionInInitializerError > >> at com.ibm.icu.util.ULocale.<clinit>(ULocale.java:109) > >> at > >> com.ibm.icu.impl.ICUResourceBundle.instantiateBundle(ICUResourceBundl > >> e.java:810) > >> at > >> com.ibm.icu.impl.ICUResourceBundle.getBundleInstance(ICUResourceBundl > >> e.java:801) > >> at > >> com.ibm.icu.util.UResourceBundle.getRootType(UResourceBundle.java:489 > >> ) > >> at > >> com.ibm.icu.util.UResourceBundle.instantiateBundle(UResourceBundle.ja > >> va:536) > >> at > >> com.ibm.icu.util.UResourceBundle.getBundleInstance(UResourceBundle.ja > >> va:144) > >> at > >> com.ibm.icu.util.UResourceBundle.getBundleInstance(UResourceBundle.ja > >> va:124) > >> at com.ibm.icu.impl.ZoneMeta.getSystemTimeZone(ZoneMeta.java:509) > >> at com.ibm.icu.util.TimeZone.getTimeZone(TimeZone.java:617) > >> at com.ibm.icu.util.TimeZone.getTimeZone(TimeZone.java:587) > >> at java.util.SimpleTimeZone$1.run(SimpleTimeZone.java:50) > >> at java.util.SimpleTimeZone$1.run(SimpleTimeZone.java:1) > >> at > >> java.security.AccessController.doPrivilegedImpl(AccessController.java > >> :171) > >> at > >> java.security.AccessController.doPrivileged(AccessController.java:53) > >> > >> at > java.util.SimpleTimeZone.getICUTimeZone(SimpleTimeZone.java:48) > >> at java.util.SimpleTimeZone.<init>(SimpleTimeZone.java:110) > >> at java.util.TimeZone.<clinit>(TimeZone.java:91) > >> at > >> org.apache.harmony.security.asn1.ASN1Time.getDecodedObject(ASN1Time.j > >> ava:51) > >> at > >> org.apache.harmony.security.asn1.ASN1UTCTime.decode(ASN1UTCTime.java: > >> 96) > >> at > >> org.apache.harmony.security.asn1.ASN1Choice.decode(ASN1Choice.java:32 > >> 0) > >> at > >> org.apache.harmony.security.asn1.BerInputStream.readSequence(BerInput > >> Stream.java:665) > >> at > >> org.apache.harmony.security.asn1.DerInputStream.readSequence(DerInput > >> Stream.java:125) > >> at > >> org.apache.harmony.security.asn1.ASN1Sequence.decode(ASN1Sequence.jav > >> a:48) > >> at > >> org.apache.harmony.security.asn1.BerInputStream.readSequence(BerInput > >> Stream.java:665) > >> at > >> org.apache.harmony.security.asn1.DerInputStream.readSequence(DerInput > >> Stream.java:125) > >> at > >> org.apache.harmony.security.asn1.ASN1Sequence.decode(ASN1Sequence.jav > >> a:48) > >> at > >> org.apache.harmony.security.asn1.BerInputStream.readSequence(BerInput > >> Stream.java:665) > >> at > >> org.apache.harmony.security.asn1.DerInputStream.readSequence(DerInput > >> Stream.java:125) > >> at > >> org.apache.harmony.security.asn1.ASN1Sequence.decode(ASN1Sequence.jav > >> a:48) > >> at > >> org.apache.harmony.security.asn1.BerInputStream.decodeValueCollection > >> (BerInputStream.java:755) > >> at > >> org.apache.harmony.security.asn1.BerInputStream.readSetOf(BerInputStr > >> eam.java:733) > >> at > >> org.apache.harmony.security.asn1.DerInputStream.readSetOf(DerInputStr > >> eam.java:138) > >> at > >> org.apache.harmony.security.asn1.ASN1SetOf.decode(ASN1SetOf.java:48) > >> at > >> org.apache.harmony.security.asn1.ASN1Implicit.decode(ASN1Implicit.jav > >> a:140) > >> at > >> org.apache.harmony.security.asn1.BerInputStream.readSequence(BerInput > >> Stream.java:665) > >> at > >> org.apache.harmony.security.asn1.DerInputStream.readSequence(DerInput > >> Stream.java:125) > >> at > >> org.apache.harmony.security.asn1.ASN1Sequence.decode(ASN1Sequence.jav > >> a:48) > >> at > >> org.apache.harmony.security.asn1.ASN1Type.decode(ASN1Type.java:97) > >> at > >> org.apache.harmony.security.pkcs7.ContentInfo$1.getDecodedObject(Cont > >> entInfo.java:153) > >> at > >> org.apache.harmony.security.asn1.ASN1Sequence.decode(ASN1Sequence.jav > >> a:53) > >> at > >> org.apache.harmony.security.utils.JarUtils.verifySignature(JarUtils.j > >> ava:73) > >> at > java.util.jar.JarVerifier.verifyCertificate(JarVerifier.java:296) > >> at > java.util.jar.JarVerifier.readCertificates(JarVerifier.java:265) > >> at java.util.jar.JarFile.getInputStream(JarFile.java:392) > >> at > >> java.net.URLClassLoader$URLJarHandler.createClass(URLClassLoader.java > >> :402) > >> at > >> java.net.URLClassLoader$URLJarHandler.findClass(URLClassLoader.java:3 > >> 71) > >> at > java.net.URLClassLoader.findClassImpl(URLClassLoader.java:1209) > >> at java.net.URLClassLoader$4.run(URLClassLoader.java:901) > >> 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:903) > >> at java.lang.ClassLoader.loadClass(ClassLoader.java:488) > >> at > >> java.lang.ClassLoader$SystemClassLoader.loadClass(ClassLoader.java:87 > >> 0) > >> at java.lang.ClassLoader.loadClass(ClassLoader.java:267) > >> Caused by: java.lang.NullPointerException > >> at com.ibm.icu.util.ULocale.getName(ULocale.java:827) > >> at com.ibm.icu.util.ULocale.<init>(ULocale.java:480) > >> at java.util.Locale.<init>(Locale.java:228) > >> at java.util.Locale.<init>(Locale.java:201) > >> at java.util.Locale.<clinit>(Locale.java:51) > >> at com.ibm.icu.util.ULocale.<clinit>(ULocale.java:109) > >> ... 54 more > >> FAILED to invoke JVM. > >> > >> > >> > >> > >> > >> > >> On Fri, Sep 24, 2010 at 11:57 AM, Tim Ellison <t.p.elli...@gmail.com> > >> wrote: > >> > On 24/Sep/2010 06:58, Robert Muir wrote: > >> >> On Fri, Sep 24, 2010 at 1:49 AM, Tim Ellison <t.p.elli...@gmail.com> > >> wrote: > >> >> > >> >>> System.out.println(new File("σ.txt").hashCode()); > >> >>> System.out.println(new File("ς.txt").hashCode()); > >> >>> > >> >>> prints out > >> >>> > >> >>> 889962580 > >> >>> 890776533 > >> >>> > >> >>> on both Harmony and the RI. > >> >>> > >> >>> > >> >> but perhaps this is just a bug in the RI? > >> >> according to the link: > >> >> > >> > http://download.oracle.com/javase/6/docs/api/java/io/File.html#hashCode%28%29 > >> >> < > >> > http://download.oracle.com/javase/6/docs/api/java/io/File.html#hashCode%28%29 > >> >Because > >> >> equality of abstract pathnames is inherently system-dependent, so is > the > >> >> computation of their hash codes. > >> >> > >> >> Is it a problem that "windows equals" is inconsistent with hashCode > >> here? I > >> >> admit these are corner cases. > >> > > >> > No, I don't think it is a problem. I was reviewing the invokers of > >> > toLowerCase() and was confused by the wording in the spec. I'm happy > >> > that we should simply lowercase it in a locale independent way, and > >> > don't need to do a "windows equals" implementation. > >> > > >> > Regards, > >> > Tim > >> > > >> > >> > >> > >> -- > >> Mohan > >> > > > > > > -- > Mohan >