On 28.08.2011 21:38, Jonas Maebe wrote:

On 27 Aug 2011, at 17:43, Sven Barth wrote:

When running the full FPC application (or "activity"):

=== begin run log ===

I/ActivityManager(   59): Start proc org.freepascal.helloworld for activity 
org.freepascal.helloworld/.THelloWorld: pid=601 uid=10035 gids={1015}
D/dalvikvm(  601): newInstance failed: p0 i0 [0 a1
D/AndroidRuntime(  601): Shutting down VM
W/dalvikvm(  601): threadid=1: thread exiting with uncaught exception 
(group=0x40015560)
E/AndroidRuntime(  601): FATAL EXCEPTION: main
E/AndroidRuntime(  601): java.lang.RuntimeException: Unable to instantiate 
activity 
ComponentInfo{org.freepascal.helloworld/org.freepascal.helloworld.THelloWorld}: 
java.lang.InstantiationException: org.freepascal.helloworld.THelloWorld

Is this an expected exception?


I'd say that it isn't an expected one... at least the converted class doesn't contain a "throws" comment at its constructor...

And here the log entry when building the Java based example with a class that 
derives from TObject:

=== begin build log ===

     [echo] Converting compiled files and external libraries into 
/home/sven/projects/android/helloandroid/bin/classes.dex...
    [apply]
    [apply] UNEXPECTED TOP-LEVEL EXCEPTION:
    [apply] com.android.dx.cf.code.SimException: local variable type mismatch: 
attempt to set or access a value of type java.lang.Object using a local 
variable of type boolean. This is symptomatic of .class transformation tools 
that ignore local variable information.

Can you run the bytecode verifier on the class files generated for your 
program? See http://wiki.freepascal.org/FPC_JVM/Debugging#Bytecode_verification 
for the details. You may also have to add the android.jar to the class path for 
the verifier to work (although I'm not 100% certain whether that will work in 
case the android versions of java.lang.* start replacing the JDK versions of 
the same classes for running the verifier itself)

I don't think using the verifier on my own class files will be of much use, because if I understand the log correct it complains about the code in FpcBitSet.containsAll (mentioned in the last few lines before the next empty one). Also - regarding your android.jar comment - I'm not even using any Android classes in that example... just TObject (as a base class) and UnicodeString (it tried to convert all RTL classes, because I put the complete RTL in the projects bin directory, in which all contained .class files are converted).

Regards,
SVen
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to