2013-06-29 59 views
2

我有一个具有核心模块的Android应用程序。将运行它的模块编码为标准CLI Java很容易。将Android java代码作为标准java应用程序运行

但是,如果我在Android Eclipse项目中复制此代码,则生成的字节代码为dalvik VM,并且与JRE不兼容。

如何容易在这种情况下开发...

有可能以某种方式代码,推出在Android项目作为标准JRE的项目吗? 这是可能的代码在一个单独的标准项目中的代码,并包括一个jar文件或作为依赖在android项目?

[编辑]

我试图从Alécio的解决方案,我有建设两个项目:

JVM项目与此代码:

package jvm; 
public class SimpleJvm { 
    public SimpleJvm() { 
     System.out.println("Ciao!") ; 
    } 
    public static void main(String[] args) { 
     SimpleJvm simple = new SimpleJvm() ; 
    } 
} 

打包成一个JAR文件中运行给出:

C:\Users\Antonio\Desktop>java -cp simplejvm.jar jvm.SimpleJvm 
Ciao! 

但在Android项目中使用它与此代码(jar复制在库目录):

package com.simpleandroid ; 

import android.os.Bundle ; 
import android.app.Activity ; 
import android.view.Menu ; 
import jvm.SimpleJvm; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState) ; 
     setContentView(R.layout.activity_main) ; 

     SimpleJvm simple = new SimpleJvm() ; 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu) ; 
     return true ; 
    } 

} 

给出:

07-05 16:51:33.386: E/dalvikvm(2102): Could not find class 'jvm.SimpleJvm', referenced from method com.simpleandroid.MainActivity.onCreate 
... 
07-05 16:51:33.686: E/AndroidRuntime(2102): FATAL EXCEPTION: main 
07-05 16:51:33.686: E/AndroidRuntime(2102): java.lang.NoClassDefFoundError: jvm.SimpleJvm 
07-05 16:51:33.686: E/AndroidRuntime(2102):  at com.simpleandroid.MainActivity.onCreate(MainActivity.java:15) 
07-05 16:51:33.686: E/AndroidRuntime(2102):  at android.app.Activity.performCreate(Activity.java:5104) 
07-05 16:51:33.686: E/AndroidRuntime(2102):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
07-05 16:51:33.686: E/AndroidRuntime(2102):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
07-05 16:51:33.686: E/AndroidRuntime(2102):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
07-05 16:51:33.686: E/AndroidRuntime(2102):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
07-05 16:51:33.686: E/AndroidRuntime(2102):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
07-05 16:51:33.686: E/AndroidRuntime(2102):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-05 16:51:33.686: E/AndroidRuntime(2102):  at android.os.Looper.loop(Looper.java:137) 
07-05 16:51:33.686: E/AndroidRuntime(2102):  at android.app.ActivityThread.main(ActivityThread.java:5039) 
07-05 16:51:33.686: E/AndroidRuntime(2102):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-05 16:51:33.686: E/AndroidRuntime(2102):  at java.lang.reflect.Method.invoke(Method.java:511) 
07-05 16:51:33.686: E/AndroidRuntime(2102):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
07-05 16:51:33.686: E/AndroidRuntime(2102):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
07-05 16:51:33.686: E/AndroidRuntime(2102):  at dalvik.system.NativeStart.main(Native Method) 

我认为原因是不同的.class文件格式......这有可能在日食以某种方式使用Dalvik的编译罐子vm和jvm的jar?

回答

0

您可以为它创建一个额外的普通Java项目,并且可以将它添加为Android的依赖项。换句话说,你可以使用构建工具,比如Ant,Maven为这个项目生成jar,你可以将这个jar附加到/ libs文件夹,然后它会自动合并到你的Android项目中。我假设你正在使用Eclipse IDE。

+0

好的,但如果jar包含标准的JVM .class文件,这是由dalvik VM执行的吗? – Antonio

+0

是的。尝试一下并分享你的结果。 –

+0

无法运行与jar文件相关的第一行代码:无法找到类 – Antonio

相关问题