Android Cordova App 因 ClassNotFoundException 而崩溃?
Posted
技术标签:
【中文标题】Android Cordova App 因 ClassNotFoundException 而崩溃?【英文标题】:Android Cordova App crashes with ClassNotFoundException? 【发布时间】:2016-02-07 22:18:30 【问题描述】:我的 android 应用有问题。以下是我得到的错误信息:
11-06 18:15:02.606: E/AndroidRuntime(2424): java.lang.RuntimeException: Unable to instantiate activity ComponentInfode.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 类的路径不正确 【参考方案1】:编辑:
只需将 activity 标记中的 android:name 重命名为 wiedemann.app.WIEDEMANN。看完截图后 http://imgur.com/oYTN4ZN
我想到我之前提出了错误的答案。
或者只需将其粘贴到 manifest.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 热键来重命名;)
【讨论】:
符号是指威德曼到威德曼?还是所有类中的所有符号?以上是关于Android Cordova App 因 ClassNotFoundException 而崩溃?的主要内容,如果未能解决你的问题,请参考以下文章
Android 自己开发的app 打开app 部分手机正常使用,但有的手机弹出通知程序异常停止 但还能正常使用?
cordova混合App开发:Cordova+Vue实现Android APP开发 (打包及调试)
安卓开发错误:The type android.support.v4.app.TaskStackBuilder$SupportParentable cannot be resolved.