【问题标题】:Android Cordova App crashes with ClassNotFoundException?Android Cordova App 因 ClassNotFoundException 而崩溃?
【发布时间】:2016-02-07 22:18:30
【问题描述】:

我的 Android 应用有问题。以下是我得到的错误信息:

11-06 18:15:02.606: E/AndroidRuntime(2424): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{de.wiedemann.mobile/de.wiedemann.mobile.WIEDEMANN}: java.lang.ClassNotFoundException: Didn't find class "de.wiedemann.mobile.WIEDEMANN" on path: DexPathList[[zip file "/data/app/de.wiedemann.mobile-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]

我尝试了以下方法:

  • 删除 R.java
  • 清理项目
  • 检查项目首选项下的所有依赖项 -> 排序和导出
  • 取消选中项目首选项下“Android”选项卡下的“是库”
  • 重启 Eclipse
  • 尝试其他工作区

没有任何作用。有谁知道这个错误是怎么来的,我该如何解决?

清单:

<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="16" android:versionName="0.0.1" android:windowSoftInputMode="adjustPan" package="de.wiedemann.mobile" xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/app_name" android:launchMode="singleTop" android:name="WIEDEMANN" android:theme="@android:style/Theme.Black.NoTitleBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:clearTaskOnLaunch="true" android:configChanges="orientation|keyboardHidden" android:exported="false" android:name="com.google.zxing.client.android.CaptureActivity" android:screenOrientation="landscape" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden">
            <intent-filter>
                <action android:name="com.google.zxing.client.android.SCAN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/share_name" android:name="com.google.zxing.client.android.encode.EncodeActivity">
            <intent-filter>
                <action android:name="com.phonegap.plugins.barcodescanner.ENCODE" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/share_name" android:name="com.google.zxing.client.android.HelpActivity">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>
    <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="19" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />
    <uses-feature android:name="android.hardware.camera" android:required="false" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>

【问题讨论】:

  • 你能把你的清单文件贴在这里吗.. 特别是清单文件中的应用程序标签
  • 完成@VishavjeetSingh
  • 试试 android:name="WIEDEMANN" > android:name="de.wiedemann.mobile.wiedemann" 。 (小写)。你在哪里有 wiedemann 类存在于类路径中?显示应用程序 java 文件树的屏幕截图。我认为您的 java 文件在另一个目录中
  • 当然@trololo,这里是imgur.com/oYTN4ZN。遗憾的是,您的解决方案不起作用
  • @FrederikWitte,manifest.xml 中 java 类的路径不正确

标签: java android eclipse cordova classnotfoundexception


【解决方案1】:

编辑:

只需将 activity 标记中的 android:name 重命名为 wiedemann.app.WIEDEMANN。看完截图后 http://imgur.com/oYTN4ZN

我想到我之前提出了错误的答案。

或者只需将其粘贴到 ma​​nifest.xml 中:

<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="16" android:versionName="0.0.1" android:windowSoftInputMode="adjustPan" package="de.wiedemann.mobile" xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/app_name" android:launchMode="singleTop" android:name="wiedemann.app.WIEDEMANN" android:theme="@android:style/Theme.Black.NoTitleBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:clearTaskOnLaunch="true" android:configChanges="orientation|keyboardHidden" android:exported="false" android:name="com.google.zxing.client.android.CaptureActivity" android:screenOrientation="landscape" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden">
            <intent-filter>
                <action android:name="com.google.zxing.client.android.SCAN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/share_name" android:name="com.google.zxing.client.android.encode.EncodeActivity">
            <intent-filter>
                <action android:name="com.phonegap.plugins.barcodescanner.ENCODE" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/share_name" android:name="com.google.zxing.client.android.HelpActivity">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>
    <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="19" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />
    <uses-feature android:name="android.hardware.camera" android:required="false" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>

【讨论】:

  • [2015-11-06 19:38:24 - WIEDEMANN] /Users/witte/Dropbox2/WIEDEMANN_App/cordova_project/platforms/android/AndroidManifest.xml:6:标签 缺少必需的属性名字。
  • 我说从 应用程序标签而不是活动标签中删除名称属性
  • 我认为你误会了我的回答。您可以撤消更改并从应用程序标记中删除名称属性
  • 哦,你是对的,但我的应用程序标签上没有“android:name”属性。
  • 嘿,我想你的回答也对,但如果你不介意的话,我会把这个给 trololo。当然,你也会得到支持。
【解决方案2】:

WIEDEMANN.java 的包路径(在Eclipse 中,不在Manifest 中)重命名为wiedemann.app > de.wiedemann.mobile(如您在gen 文件夹中看到的正确包名称)。请将符号更改为小写。使用 F2 热键来重命名;)

【讨论】:

  • 符号是指威德曼到威德曼?还是所有类中的所有符号?
猜你喜欢
  • 2023-03-14
  • 2022-06-13
  • 1970-01-01
  • 2020-03-09
  • 1970-01-01
  • 2016-04-23
  • 2019-09-02
  • 2022-06-11
  • 1970-01-01
相关资源
最近更新 更多