android:没有类def从库项目发现错误

时间:2011-04-18 09:37:45

标签: android android-library

在使用模拟器运行我的应用程序时,我得到了一个noclassdeffound异常:

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    Intent myIntent = new Intent(ActivityPano.this, ActivityTable.class);
    startActivity(myIntent);
}

ActivityTable导致异常。

它是在android-library项目中定义的,我已经将其包含在java构建路径以及android引用对话框中。在eclipse中没有错误,但是当它在模拟器中启动时会崩溃。

这是我的清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.mypackage"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar" android:debuggable="false" android:description="@string/description">
        <activity android:name=".ActivityHPanorama"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>


        <activity android:name="com.mypackage.ActivityTable"></activity>

    </application>


<uses-sdk android:minSdkVersion="3"></uses-sdk>
</manifest> 

这是logcat的错误:

04-18 11:32:07.767: ERROR/dalvikvm(483): Could not find class com.mypackage.ActivityTable', referenced from method com.mypackage.ActivityHPanorama.onCreate

让我有点怀疑的是来自控制台(而不是logcat)的这一行:

[2011-04-18 14:55:59 - panorama] Could not find panorama.apk!

panorama是图书馆项目的名称。

4 个答案:

答案 0 :(得分:1)

如果您在安装应用程序时依赖性正确,则应在控制台日志中看到以下内容

  

[2011-04-19 16:41:10 - TicTacToe]安装TicTacToe.apk ......

     

[2011-04-19 16:41:12 - TicTacToe]成功!

但是既然你提到找不到panorama.apk!我尝试使用tic-tac-toe sameple库复制这种行为..

这就是我所做的,

为eclipse添加了TicTacToe库,还为eclipse添加了TicTacToe应用程序。

右键单击Library项目,转到android选项卡并删除IsLibrary检查

右键单击主应用程序项目,转到android选项卡删除依赖

转到主应用程序项目的java构建路径,并将库项目添加为必需项目

编译很顺利,但在安装应用程序时,它正在检查library.apk我猜你是否正在做类似的事情可能是问题。

  

[2011-04-19 16:42:16 - TicTacToe]安装TicTacToe.apk ......

     

[2011-04-19 16:42:20 - TicTacToe]成功! [2011-04-19 16:42:20 -   TicTacToe]找到项目依赖项,安装:TicTacToeLib

     

[2011-04-19 16:42:20 - TicTacToeLib]将TicTacToeLib.apk上传到   设备'SH0A5PL08769'[2011-04-19 16:42:20 - TicTacToeLib]安装   TicTacToeLib.apk ... [2011-04-19 16:42:24 - TicTacToeLib]成功!

答案 1 :(得分:-1)

你有没有在你的Manifest中添加这个类?

<activity android:name="ActivityTable"></activity>

答案 2 :(得分:-1)

我认为你应该使用

 Intent myScreen = new Intent();
    myScreen.setClassName(YourCurrentScreen.this,
fullpackagename.yourclassName.class.getName());
    startActivityForResult(myScreen, 0);

这肯定有用

答案 3 :(得分:-1)

问题是你还没有为你的“ActivityTable”定义任何意图过滤器......

<activity android:name=".ActivityTable" 
                  android:label="ActivityTable">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

这应该有帮助..