我刚刚使用Android SDK Manager将Android SDK工具更新到版本17,将Android兼容性更新到版本7.现在,我运行的程序在启动时已经崩溃了几年。
缩小问题范围,我创建了一个新的空白项目,将android-support-v4.jar添加到构建路径,并将Activity更改为FragmentActivity,这就是全部。现在它崩溃了。
错误消息是:
java.lang.ClassNotFoundException: com.example.test.TestActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.test-2.apk]
代码是:
package com.example.test;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
public class TestActivity 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="com.example.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="9" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".TestActivity"
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>
答案 0 :(得分:27)
原来这是Android SDK Tools r17的问题。我以前一直在使用教程中给出的方法:
http://mobile.tutsplus.com/tutorials/android/android-compatibility-working-with-fragments/
然而,这不再适用。相反,我需要做的就是在Eclipse中右键单击我的项目并选择Android Tools - &gt;添加支持库...
执行此操作意味着不再需要转到Java Build Path并单击“添加外部JAR ...”
非常感谢eMich提供的解决方案:Jar-file issue with ADT r17
答案 1 :(得分:11)
我有同样的问题,我在stackoverflow中找到的答案都没有解决我的问题。经过几个小时(多次)反复试验,我通过配置项目的构建路径解决了我的问题。在Eclipse中,右键单击项目&gt; Build Path
&gt; Configure Build Path...
,在Order and Export
标签中,选中Android Private Libraries
,然后点击OK
。之后,清理项目并再次尝试运行。
我通过将我的项目与可以按预期运行的其他(新创建的)项目进行比较来解决了这个问题。我比较了它们的每个配置和AndroidManifest.xml。
希望这也有助于你:)
更新其他解决方案:使用ANT
我找到了解决这个问题的另一种方法:使用ANT。我的朋友面临同样的问题,但修复构建路径并没有解决他的问题。我不知道是不是因为我们使用的是不同的IDE版本,不同的ADT版本或不同的操作系统(我使用的是GNU / Linux)。然后,我建议他使用ANT而不是IDE的那个。
首先,通过为每个项目(包括库项目)执行build.xml
来设置项目(创建android update project -p <project-dir> -n <project-name>
)。然后,从主项目的目录中,执行ant debug
构建,ant installd
进行安装,然后运行应用程序。
奇怪的是,一旦他以这种方式成功,他甚至可以再次使用IDE进行编译,而不需要ANT。
答案 2 :(得分:0)
我认为片段活动是否在清单中正确列出?这是我在Manifest中的主要FragmentActivity类:
<activity android:name=".Polling" android:label="@string/app_name"
android:windowSoftInputMode="stateHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
答案 3 :(得分:0)
在Package Explorer中选择您的项目&gt;右键单击&gt; Android工具&gt;修复PRoject属性 并且 试试Project&gt;清洁
然后重新运行。
答案 4 :(得分:0)
我得到了
java.lang.NoClassDefFoundError: com.android.example.SupportFragment
at com.android.example.SupportFragmentActivity.onCreate()
on PopupMenu
SupportFragment extends SherlockFragment implements PopupMenu.OnMenuItemClickListener
...
@Override
public boolean onMenuItemClick(android.view.MenuItem item) {
return onOptionsItemSelected(item);
}
当尝试使api 17应用程序与api 8兼容时,唯一的指示是上面的logcat错误,因此如果出现此错误,请检查是否支持所有导入的类。
答案 5 :(得分:0)
通过执行构建路径解决了同样的问题 - >配置构建路径 - >订单和导出 - >检查添加私有库 - &gt;确定。
然后清理项目。
解决了一个大问题。
答案 6 :(得分:0)
我也遇到了同样的问题,并通过以下方式解决了这个问题。 如果由于某种原因你在构建路径中对私有库进行了UNCHECKED,那么只需在构建路径中添加Androidv-4 jar并在&#34; Order and Export&#34;中启用(检查)它。标签
答案 7 :(得分:-1)