2012-03-23 23 views
9

的Jar文件的问题,我似乎已经因为最新的ADT更新一个棘手的问题,以释放17与ADT R17

我做了一个简单的应用程序来说明我的问题,我不知道我是不是做错任何事情。我的应用程序的主要活动是从支持包中的FragmentActivity继承,并且在启动时以某种方式崩溃。

为了说明,我做了一个示例项目。

首先,这里是我的哑类,DummyProjectActivity的代码,很简单:

public class DummyProjectActivity extends FragmentActivity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
} 

然后,有清单:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="be.emich.labs" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="8" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:name=".DummyProjectActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

.jar文件导入正确在项目中,我得到这个堆栈跟踪:

E/AndroidRuntime(11509): FATAL EXCEPTION: main 
E/AndroidRuntime(11509): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{be.emich.labs/be.emich.labs.DummyProjectActivity}: java.lang.ClassNotFoundException: be.emich.labs.DummyProjectActivity 
E/AndroidRuntime(11509): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1879) 
E/AndroidRuntime(11509): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 
E/AndroidRuntime(11509): at android.app.ActivityThread.access$600(ActivityThread.java:122) 
E/AndroidRuntime(11509): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 
E/AndroidRuntime(11509): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(11509): at android.os.Looper.loop(Looper.java:137) 
E/AndroidRuntime(11509): at android.app.ActivityThread.main(ActivityThread.java:4340) 
E/AndroidRuntime(11509): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(11509): at java.lang.reflect.Method.invoke(Method.java:511) 
E/AndroidRuntime(11509): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
E/AndroidRuntime(11509): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
E/AndroidRuntime(11509): at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime(11509): Caused by: java.lang.ClassNotFoundException: be.emich.labs.DummyProjectActivity 
E/AndroidRuntime(11509): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
E/AndroidRuntime(11509): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
E/AndroidRuntime(11509): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
E/AndroidRuntime(11509): at android.app.Instrumentation.newActivity(Instrumentation.java:1023) 
E/AndroidRuntime(11509): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1870) 
E/AndroidRuntime(11509): ... 11 more 

我在做什么错在这里?这可能是最新开发工具中的一个错误吗?

我遇到了使用来自兼容库的FragmentActivity的每个项目中的问题。我不明白什么是错的。任何人都有这个问题?帮助将不胜感激。我没有从FragmentActivity继承的Activity的问题。我已卸载/重新安装应用程序。完成各种“清洁工程”。重新启动Eclipse。

更新:该问题显然未链接到兼容性包,但ADT r17处理jar文件链接的方式。要包含的罐子应放入库/文件夹中,ADT将自动链接它们。否则,它们将从APK中丢失,并在每次调用jarfile中的代码时使应用程序崩溃。

+0

我要通过导入源而不是.jar文件来尝试。让我们看看这是否会改变任何事情。也许这个.jar文件存在问题。 – eMich 2012-03-23 11:05:58

+0

出于好奇,在上面的日志输出中,是否在异常之前说“VFY:找不到在签名中引用的类”? – jfritz42 2012-03-27 21:14:56

回答

6

直到最新版本工具右键单击>添加兼容性包在我的项目上没有工作,我通过项目属性手动包括jar文件。我再次尝试“添加兼容性软件包”,并且自r17起,似乎这对我的机器是固定的。这解决了这个问题。

+2

我的jar文件曾经在名为“lib”的文件夹中,并且由于某些原因未包含在APK中。将它们移动到库将它们与ADT r17自动链接,并解决了这个问题。 – eMich 2012-03-23 12:06:02