Zxing导致Android应用程序强制关闭
只要发生扫描的活动发生,android应用程序就会关闭。它在一个点上工作,突然不再工作了。 Core.jar位于lib文件夹中。Zxing导致Android应用程序强制关闭
logcat的:
11-08 18:13:16.490: E/AndroidRuntime(1667): FATAL EXCEPTION: main
11-08 18:13:16.490: E/AndroidRuntime(1667): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.picky.pickyeater/libcom.google.zxing.client.android.CaptureActivity}: java.lang.ClassNotFoundException: libcom.google.zxing.client.android.CaptureActivity in loader dalvik.system.PathClassLoader[/data/app/com.picky.pickyeater-1.apk]
11-08 18:13:16.490: E/AndroidRuntime(1667): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
11-08 18:13:16.490: E/AndroidRuntime(1667): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-08 18:13:16.490: E/AndroidRuntime(1667): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-08 18:13:16.490: E/AndroidRuntime(1667): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-08 18:13:16.490: E/AndroidRuntime(1667): at android.os.Handler.dispatchMessage(Handler.java:99)
11-08 18:13:16.490: E/AndroidRuntime(1667): at android.os.Looper.loop(Looper.java:123)
11-08 18:13:16.490: E/AndroidRuntime(1667): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-08 18:13:16.490: E/AndroidRuntime(1667): at java.lang.reflect.Method.invokeNative(Native Method)
11-08 18:13:16.490: E/AndroidRuntime(1667): at java.lang.reflect.Method.invoke(Method.java:521)
11-08 18:13:16.490: E/AndroidRuntime(1667): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-08 18:13:16.490: E/AndroidRuntime(1667): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-08 18:13:16.490: E/AndroidRuntime(1667): at dalvik.system.NativeStart.main(Native Method)
11-08 18:13:16.490: E/AndroidRuntime(1667): Caused by: java.lang.ClassNotFoundException: libcom.google.zxing.client.android.CaptureActivity in loader dalvik.system.PathClassLoader[/data/app/com.picky.pickyeater-1.apk]
11-08 18:13:16.490: E/AndroidRuntime(1667): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
11-08 18:13:16.490: E/AndroidRuntime(1667): at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
11-08 18:13:16.490: E/AndroidRuntime(1667): at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
11-08 18:13:16.490: E/AndroidRuntime(1667): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
11-08 18:13:16.490: E/AndroidRuntime(1667): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
OnCreate中():
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "PRODUCT_MODE");
startActivityForResult(intent, 0);
}
的AndroidManifest.xml摘录:
<activity
android:configChanges="orientation|keyboardHidden"
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="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter >
<action android:name="com.google.zxing.client.android.SCAN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
的.classpath:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry kind="lib" path="lib/gson-1.7.1.jar"/>
<classpathentry kind="lib" path="lib/jsoup-1.6.1.jar"/>
<classpathentry kind="lib" path="lib/core.jar"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>
我知道根据肖恩上面的说法,这在技术上是不正确的,但是这是通过将其作为库链接来解决的。
在斑马线:
1.项目
2.单击右键单击属性
3.单击的Android在左侧菜单
4.检查是图书馆
在我的应用程序中:
1.右键点击项目
2.单击属性
3.单击的Android在左侧菜单
4.单击添加
5.选择斑马线项目
做*不*使用android /代码库中的代码。这不是一个图书馆,并不会这样工作。我们强烈建议您不要复制和粘贴整个应用程序。特别是我们认为以这种方式使用它会违反商标。不要鼓励这个,即使它不是你最终做的。 –
这是一个班级项目。我们从来没有去过任何地方。我真诚道歉。 – Kristin
zxing在这里没有做任何事情。您复制并粘贴了我们的代码,并未将其包含在您的JAR中。你只是看到一个ClassNotFoundException
;你甚至没有达到你使用我们的代码的地步。
FWIW我们强烈反对我们的开源代码的这种级别的复制和粘贴。请编写自己的应用程序来启动并重用您需要的部分。从错误中看来,这不是你要去的。
更强烈的是,您不应该使用我们的软件包名称。
等待我困惑。我真的不想要复制任何东西。我们只是遵循包括罐子的指示。你如何建议我们正确访问扫描? 我们的软件包名称是com.picky.pickyeater – Kristin
布局中的某些内容引用了'libcom.google.zxing.client.android.CaptureActivity',这是问题的根源。我不确定你正在遵循的是什么指令,但是你不需要包含任何东西,除了'core.jar'外没有任何东西来自'android /' –
我们的项目中没有任何东西来自android /。我们如何参考我们的Manifest中的部分是不正确的?或者在OnCreate()中引用SCAN? – Kristin
你应该尝试清理所有斑马线库项目,所有其他引用的库和您的应用程序项目。这帮了我这个错误信息。
以我的经验,我遇到了同样的问题。但是如果你使用的是eclipse,请确保你有你自己的项目中包含的库(CaptureActivity)REALLY。
要重新检查:右键单击您的项目 - >属性 - > Android的部分 - >看看是否你的图书馆是GREEN。如果不是,那意味着你没有正确的包含库。
要解决这个问题,当试图创建文库的现有库,你可以检查它复制到你的磁盘
希望帮助
重新命名的包? – Ian
这不是一个包 - 它是构建路径上的一个jar – Kristin
看起来像jar没有出现在构建路径中。您需要将core.jar添加到项目中(右键单击您的项目 - >属性 - > Java Build Path - >添加外部JARS ... - >选择core.jar - >确定)。 – Ian