Android 使用zxing时未找到类

Android 使用zxing时未找到类,android,build,zxing,classnotfoundexception,Android,Build,Zxing,Classnotfoundexception,所以我正在开发一个可以扫描二维码的应用程序。我下载了ZXing库,使用ApacheAnt构建它以获取core.jar,将它放在我的项目文件夹中,并将它作为jar添加到构建路径中。不,当我尝试执行以下操作时: Intent intent = new Intent("com.google.zxing.client.android.SCAN"); intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); startActivityForResult(intent,

所以我正在开发一个可以扫描二维码的应用程序。我下载了ZXing库,使用ApacheAnt构建它以获取core.jar,将它放在我的项目文件夹中,并将它作为jar添加到构建路径中。不,当我尝试执行以下操作时:

Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); 
startActivityForResult(intent, 0);
我得到以下错误:

08-14 18:52:01.191: E/AndroidRuntime(617): FATAL EXCEPTION: main
08-14 18:52:01.191: E/AndroidRuntime(617): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.android.Wowser/com.google.zxing.client.android.CaptureActivity}: java.lang.ClassNotFoundException: com.google.zxing.client.android.CaptureActivity in loader dalvik.system.PathClassLoader[/data/app/com.android.Wowser-1.apk]
08-14 18:52:01.191: E/AndroidRuntime(617):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)
08-14 18:52:01.191: E/AndroidRuntime(617):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
08-14 18:52:01.191: E/AndroidRuntime(617):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
08-14 18:52:01.191: E/AndroidRuntime(617):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
08-14 18:52:01.191: E/AndroidRuntime(617):  at android.os.Handler.dispatchMessage(Handler.java:99)
08-14 18:52:01.191: E/AndroidRuntime(617):  at android.os.Looper.loop(Looper.java:123)
08-14 18:52:01.191: E/AndroidRuntime(617):  at android.app.ActivityThread.main(ActivityThread.java:3683)
08-14 18:52:01.191: E/AndroidRuntime(617):  at java.lang.reflect.Method.invokeNative(Native Method)
08-14 18:52:01.191: E/AndroidRuntime(617):  at java.lang.reflect.Method.invoke(Method.java:507)
08-14 18:52:01.191: E/AndroidRuntime(617):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-14 18:52:01.191: E/AndroidRuntime(617):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-14 18:52:01.191: E/AndroidRuntime(617):  at dalvik.system.NativeStart.main(Native Method)
08-14 18:52:01.191: E/AndroidRuntime(617): Caused by: java.lang.ClassNotFoundException: com.google.zxing.client.android.CaptureActivity in loader dalvik.system.PathClassLoader[/data/app/com.android.Wowser-1.apk]
08-14 18:52:01.191: E/AndroidRuntime(617):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
08-14 18:52:01.191: E/AndroidRuntime(617):  at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
08-14 18:52:01.191: E/AndroidRuntime(617):  at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
08-14 18:52:01.191: E/AndroidRuntime(617):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
08-14 18:52:01.191: E/AndroidRuntime(617):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561)
08-14 18:52:01.191: E/AndroidRuntime(617):  ... 11 more

<?xml version="1.0" encoding="utf-8"?>
08-1418:52:01.191:E/AndroidRuntime(617):致命异常:main
08-14 18:52:01.191:E/AndroidRuntime(617):java.lang.RuntimeException:无法实例化活动组件信息{com.android.Wowser/com.google.zxing.client.android.CaptureActivity}:java.lang.ClassNotFoundException:com.google.zxing.client.android.CaptureActivity装入器dalvik.system.PathClassLoader[/data/app/com.android.Wowser-1.apk]
08-14 18:52:01.191:E/AndroidRuntime(617):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)
08-14 18:52:01.191:E/AndroidRuntime(617):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
08-14 18:52:01.191:E/AndroidRuntime(617):在android.app.ActivityThread.access$1500(ActivityThread.java:117)
08-14 18:52:01.191:E/AndroidRuntime(617):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
08-14 18:52:01.191:E/AndroidRuntime(617):在android.os.Handler.dispatchMessage(Handler.java:99)上
08-14 18:52:01.191:E/AndroidRuntime(617):在android.os.Looper.loop(Looper.java:123)
08-14 18:52:01.191:E/AndroidRuntime(617):位于android.app.ActivityThread.main(ActivityThread.java:3683)
08-14 18:52:01.191:E/AndroidRuntime(617):位于java.lang.reflect.Method.Invokenactive(本机方法)
08-14 18:52:01.191:E/AndroidRuntime(617):在java.lang.reflect.Method.invoke(Method.java:507)
08-14 18:52:01.191:E/AndroidRuntime(617):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-14 18:52:01.191:E/AndroidRuntime(617):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-14 18:52:01.191:E/AndroidRuntime(617):在dalvik.system.NativeStart.main(本机方法)
08-14 18:52:01.191:E/AndroidRuntime(617):由以下原因引起:java.lang.ClassNotFoundException:com.google.zxing.client.android.CaptureActivity加载程序dalvik.system.PathClassLoader[/data/app/com.android.Wowser-1.apk]
08-14 18:52:01.191:E/AndroidRuntime(617):在dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
08-14 18:52:01.191:E/AndroidRuntime(617):位于java.lang.ClassLoader.loadClass(ClassLoader.java:551)
08-14 18:52:01.191:E/AndroidRuntime(617):在java.lang.ClassLoader.loadClass(ClassLoader.java:511)
08-14 18:52:01.191:E/AndroidRuntime(617):在android.app.Instrumentation.newActivity(Instrumentation.java:1021)上
08-14 18:52:01.191:E/AndroidRuntime(617):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561)
2008-1418:52:01.191:E/AndroidRuntime(617):。。。还有11个



谁能告诉我如何设置Zxing以正确使用它,或者我可能会出什么问题?非常感谢您的帮助。

您出现此错误的原因只有三个:

  • 这个阶级实际上并不存在。如果您使用的是来自官方示例的代码,并且得到了这些代码,请确保您拥有库的最新版本
  • 您尚未将jar添加到构建路径中。要解决这个问题,右键单击Eclipse中的jar,然后执行构建路径► 添加到构建路径
  • 您的jar不在/libs文件夹中。当您将jar添加到构建路径中,但较新版本的ADT需要它位于/libs中时,就会发生这种情况。将它放在那里并重新添加到构建路径

  • 您是否安装了Zxing条形码扫描仪应用程序?您必须安装应用程序以使用intent进行扫描

    CaptureActivity不在core.jar库中。如果您不想安装并集成到自己的应用程序中,您必须将他们的Android项目作为库包含在内。那真是一团糟。最好安装他们的应用程序

    另一种方法是使用图书馆。我发现这个库很容易使用,不需要安装他们的应用程序。唯一的问题是它是否支持您想要的条形码。我建议你去看看

    编辑:

    一旦我尝试使用此链接将zxing包含在本机中


    您可以查看此信息。

    您可以发布您的清单文件吗?请勿复制和粘贴我们的清单@肖恩·欧文。Zxing是android最好的条形码扫描仪。但为什么没有更好的方法在不安装应用程序的情况下集成此功能?你应该为android创建一个库来轻松处理这个问题。你能告诉我整合zxing的最佳方式吗?@SeanOwen zxing是它的优秀作品!请发布关于“如何在应用程序中集成it”的教程/指南(无需安装应用程序);我目前正在使用emulator进行开发,那么如何安装扫描仪应用程序呢?这是否意味着如果某人的手机上没有条形码扫描仪应用程序,该应用程序将不会运行?我在您的清单中看到您使用了CaptureActivity。您是否将他们的Android项目作为库包括在内?或者您是否将CaptureActivity复制到了您的项目中?目前我没有这样做,因为我认为它是唯一需要的core.jar文件,并且我从一个教程中获得了清单条目,该教程没有提到添加库。。我该怎么做?编辑了我的答案。严格按照教程进行操作。您不需要安装这些类中的任何一个来通过Intent进行集成,这是最好的方法。问题是,他试图嵌入代码,非常不恰当,而且不知道如何嵌入。
    <uses-sdk android:minSdkVersion="10" />
    
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CAMERA"/>
    
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name="com.android.Wowser.DealsActivity"
            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.google.zxing.client.android.CaptureActivity"
            android:configChanges="orientation|keyboardHidden"
            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>
        <activity android:name=".Register" />
        <activity android:name=".SignIn" />
        <activity android:name=".Options" />
        <activity android:name=".Scan" />
    </application>