Zxing库app集成运行时异常ClassNotFoundException

时间:2014-02-21 11:38:35

标签: java android zxing classnotfoundexception

我尝试将zxing-Library集成到Android应用程序中,因此用户无需安装zxing。

我做了什么:

  • 下载Zxing-2.2.zip
  • 创建自己的build.xml(在core / ...中为none):

    <?xml version="1.0" encoding="utf-8" ?>
    <project name="core" default="jar" basedir=".">
        <target name="compile" description="Compile source">
            <mkdir dir="bin" />
            <javac srcdir="src" includes="**" destdir="bin"/>
            <copy todir="bin">
                <fileset dir="src" />
            </copy>
        </target>
        <target name="jar" description="Package into JAR" depends="compile">
            <jar destfile="core.jar" basedir="bin" compress="true" />
        </target>
    </project>
    
  • 使用ant -f core/build.xml

  • 创建core.jar
  • 在Eclipse中从现有代码创建Android项目
  • 在eclipse中为core.jar(“libs”)创建文件夹
  • 在那里粘贴罐子
  • 也在应用程序的最后两个步骤中调用zxing-lib
  • in“xzing-lib-app”preferences =&gt; android =&gt;检查为图书馆
  • 在主叫app preferences =&gt;中android =&gt; librarys =&gt; add =&gt; “xzing-LIB-应用”

我也尝试过:

  • 通过configure build path(除了自动添加)
  • 将core.jar添加到库中
  • 在导出标签中设置复选框
  • 将库移到顶部
  • 清理这两个项目
  • ...

这是出现错误的上半部分

02-21 11:34:55.055: E/AndroidRuntime(8797): FATAL EXCEPTION: main
02-21 11:34:55.055: E/AndroidRuntime(8797): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.hit.scantohit/com.google.zxing.client.android.CaptureActivity}: java.lang.ClassNotFoundException: com.google.zxing.client.android.CaptureActivity

Manifest:

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

    <uses-permission android:name="android.permission.CAMERA"/>

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.hit.scantohit.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />

                <data
                    android:host="scanclinet"
                    android:scheme="hitscheme" />
                <!-- myscheme://myhost ==> hitscheme://scanclinet -->
            </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>
    </application>
</manifest>

布局xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/btn_start_hit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/btn_start_scan"
        android:layout_alignBottom="@+id/btn_start_scan"
        android:layout_marginLeft="63dp"
        android:layout_toRightOf="@+id/btn_start_scan"
        android:text="HIT" />

    <Button
        android:id="@+id/btn_start_scan"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_marginBottom="42dp"
        android:layout_marginLeft="83dp"
        android:text="SCAN" />

</RelativeLayout>

有没有人知道任何帮助?

3 个答案:

答案 0 :(得分:3)

尝试一下

 In ZXing:

 1. Right click on project 
   2. Click Properties 
3. Click Android in the left hand side menu 
 4. Check Is Library 

  In my app: 
 1. Right click on project 
 2. Click Properties 
 3. Click Android in the left hand side menu 
  4. Click Add 
  5. Select the ZXing project

答案 1 :(得分:0)

我的代码中包含ZXing库的方式是在Eclipse的项目的libs文件夹中使用Core.jar文件(预构建的文件)(无需手动更改构建路径)并且我有我的Eclipse工作区中的ZXing项目(它是一个库)。你需要做的就是在Eclipse中右键单击你的项目并转到Properties-&gt; Android-&gt; Library部分,单击add并选择ZXing android项目(必须将其标记为库)。

答案 2 :(得分:0)

我可以通过使用Zxing 2.1而不是2.2来解决问题。像这里描述的那样:
http://khurramitdeveloper.blogspot.ch/p/android-barcode-scan-using-zxing-library.html

在这里你可以得到Zxing 2.1
https://code.google.com/p/zxing/downloads/detail?name=ZXing-2.1.zip