【问题标题】:Changed package name in android project, now getting noclassdeffounderror在 android 项目中更改了包名,现在得到 noclassdeffounderror
【发布时间】:2013-08-21 02:54:07
【问题描述】:

我有一个运行良好的 android 项目。它具有三个活动:MainActivity、CorrectAnswerActivity 和 UserFailed。我在 CorrectAnswerActivity 和 UserFailed 上使用 Google Play Services api,所以这些正在扩展 BaseGameUtil。

这一切都很好,直到我认为更改我的包名称是个好主意(因为我更改了我的游戏名称)。因此,现在当您单击 MainActivity 上的按钮时,它将带您进入 Failed 或 Correct,我得到 noclassdeffounderror 就好像它找不到 CorrectAnswerActivity 或 UserFailed。

我用新的包名和提到的所有其他地方更新了我的清单。

08-20 21:45:29.765: E/AndroidRuntime(5549): 
Caused by: java.lang.NoClassDefFoundError: com.blackcrowndev.numbers.CorrectAnswerActivity
08-20 21:45:29.765: E/AndroidRuntime(5549):      at com.blackcrowndev.numbers.MainActivity.onClickGuess(MainActivity.java:254)

我感觉好像跟什么有关

public class CorrectAnswerActivity extends BaseGameActivity
implements View.OnClickListener {

但我没有更改库中的任何内容。

感谢各位的帮助。我真的是 Java 和 Android 开发的新手,所以如果我需要提供更多信息,请告诉我。我会把清单文件留给你:

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

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.Password" >
        <meta-data
            android:name="com.google.android.gms.games.APP_ID"
            android:value="@string/app_id" />

        <activity
            android:name="com.blackcrowndev.numbers.MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.blackcrowndev.numbers.CorrectAnswerActivity"
            android:label="@string/title_activity_correct_answer"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name="com.blackcrowndev.numbers.UserFailed"
            android:label="@string/title_activity_user_failed"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name="com.blackcrowndev.numbers.HowToPlay"
            android:label="@string/title_activity_how_to_play"
            android:screenOrientation="portrait">
        </activity>
    </application>

</manifest>

【问题讨论】:

  • 在名称更改后,您是否清理并重建了整个项目?你能确认CorrectAnswerActivity在哪个包里吗?
  • 我确实清理了整个项目。我所有的活动都在 com.blackcrowndev.numbers
  • 删除所有在java构建路径下添加的jar文件。清理项目。现在将jar重新添加到java构建路径中。再次清理。

标签: java android google-play-games


【解决方案1】:

右键单击项目,然后转到属性 -> javabuild path -> order export 选择所需并清理您的项目。

【讨论】:

  • 这似乎没有帮助。
【解决方案2】:

您似乎遇到了 ADT 错误。

检查 - https://code.google.com/p/android/issues/detail?id=55304

StackOverflow 中也有类似的问答

ClassNotFoundException after changing extension from Activity to BaseGameActivity

知道解决方法是“转到属性->在应用程序项目上订购和导出并检查所有库项目的‘Android 私有库’”。 (在您的情况下,应将 google play services 库设置为“Android Private Libraries”。

【讨论】:

    【解决方案3】:

    修改manifest文件中的包名,对应每个class文件,如有不改名!!

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 2016-08-05
      • 2013-08-06
      • 2018-06-10
      • 2014-03-09
      • 1970-01-01
      • 1970-01-01
      • 2021-01-24
      • 1970-01-01
      相关资源
      最近更新 更多