db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Francois Orsini (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-4458) Dalvik / Andoid compatibility
Date Wed, 02 Dec 2009 03:40:20 GMT

    [ https://issues.apache.org/jira/browse/DERBY-4458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12784610#action_12784610
] 

Francois Orsini commented on DERBY-4458:
----------------------------------------


  > Seems like if there is an improvement needed, it is in the android 'dx' tool, isn't
it?

You would think so but according to the Dalvik lead engineer, it is not:
http://www.mail-archive.com/android-developers@googlegroups.com/msg29593.html

This warning (not an error) is also reported by 'dx' translating some other Java libraries,
not just derby.jar.
Unless I'm mistaken, derby.jar GA is built using Java 1.4 which is obviously not a modern
compiler? my guess is that this warning would disappear if building with Java 1.5 or 1.6.

In any case, this is apparently NOT a blocking issue - Thomas was also reporting a Java OutOfMemory
error which can be solved in Dalvik by increasing the heap size in dx.bat...

Of course, even if the translation succeeds, Derby will not run, causing all kinds of errors
due to its dynamic generated bytecode not being translated by the Dalvik VM at runtime, which
is obviously a separate issue by itself.

> Dalvik / Andoid compatibility
> -----------------------------
>
>                 Key: DERBY-4458
>                 URL: https://issues.apache.org/jira/browse/DERBY-4458
>             Project: Derby
>          Issue Type: Improvement
>    Affects Versions: 10.5.3.0
>         Environment: dx 1.2 (from the Android SDK 2.0) running on Java 1.6
>            Reporter: Thomas Görres
>            Priority: Blocker
>
> derby.jar cannot be used on mobile devices running the Android OS. Android uses Dalvik
as runtime environment, and the classfiles from derby.jar cannot be translated to Dalvik byte
code.
> Steps to repeat:
> 1. get the Android SDK from http://developer.android.com
> 2. navigate to [android-sdk]/platforms/android-1.5/tools
> 3. execute ./dx --dex path/to/derby.jar
> The dx tool should convert the JRE byte code to Dalvik byte code. Instead, it spits out
this warning several time:
> warning: Ignoring InnerClasses attribute for an anonymous inner class that doesn't come
with an associated EnclosingMethod attribute. (This class was probably produced by a broken
compiler.)
> Then it runs out of memory:
> java.lang.OutOfMemoryError: Java heap space
> 	at com.android.dx.rop.code.ThrowingInsn.withNewRegisters(ThrowingInsn.java:116)
> 	at com.android.dx.ssa.NormalSsaInsn.toRopInsn(NormalSsaInsn.java:122)
> 	at com.android.dx.ssa.back.SsaToRop.convertInsns(SsaToRop.java:386)
> 	at com.android.dx.ssa.back.SsaToRop.convertBasicBlock(SsaToRop.java:365)
> 	at com.android.dx.ssa.back.SsaToRop.convertBasicBlocks(SsaToRop.java:300)
> 	at com.android.dx.ssa.back.SsaToRop.convertToRop(SsaToRop.java:277)
> 	at com.android.dx.ssa.back.SsaToRop.convert(SsaToRop.java:118)
> 	at com.android.dx.ssa.back.SsaToRop.convertToRopMethod(SsaToRop.java:71)
> 	at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:103)
> 	at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:74)
> 	at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:269)
> 	at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:131)
> 	at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:85)
> 	at com.android.dx.command.dexer.Main.processClass(Main.java:297)
> 	at com.android.dx.command.dexer.Main.processFileBytes(Main.java:276)
> 	at com.android.dx.command.dexer.Main.access$100(Main.java:56)
> 	at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:228)
> 	at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245)
> 	at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:130)
> 	at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108)
> 	at com.android.dx.command.dexer.Main.processOne(Main.java:245)
> 	at com.android.dx.command.dexer.Main.processAllFiles(Main.java:183)
> 	at com.android.dx.command.dexer.Main.run(Main.java:139)
> 	at com.android.dx.command.dexer.Main.main(Main.java:120)
> 	at com.android.dx.command.Main.main(Main.java:87)

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


Mime
View raw message