Исключение среды интеграции библиотеки Zxing ClassNotFoundException

Я пытаюсь интегрировать zxing-Library в приложение для Android, поэтому пользователю не нужно устанавливать zxing.

Что я сделал:

  • Загрузить Zxing-2.2.zip
  • создание собственного build.xml (в ядре /... не было):

    <!--?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">
     </fileset></copy>
     </javac></mkdir></target>
     <target name="jar" description="Package into JAR" depends="compile">
     <jar destfile="core.jar" basedir="bin" compress="true">
     </jar></target>
    </project>
  • создавая core.jar с помощью ant -f core/build.xml

  • в Eclipse, создающем Android Project из существующего кода
  • создание папки в eclipse для core.jar("libs")
  • склеивание там
  • также делая последние 2 шага в приложении, которые будут вызывать zxing-lib
  • в настройках "xzing-lib-app" => android => проверить как библиотеку
  • в настройках вызывающего приложения => android => librarys => add => "xzing-lib-app"

То, что я также пробовал:

  • добавление 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

Манифест:

<!--?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">
 </category></action></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 -->
 </data></category></action></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">
 </category></action></intent-filter>
 <intent-filter>
 <action android:name="com.google.zxing.client.android.SCAN">

 <category android:name="android.intent.category.DEFAULT">
 </category></action></intent-filter>
 </activity>
 </application>
</uses-sdk></uses-permission></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></relativelayout><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"> <p> Кто-нибудь знает какую-либо помощь?</p> </button>
3 ответа

Я мог бы решить проблему, используя 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


попробуйте

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


Как у меня есть библиотека ZXing, включенная в мой код, есть файл Core.jar (предварительно встроенный) в папке libs проекта в Eclipse (нет необходимости вручную изменять путь сборки), и у меня есть проект ZXing (который является библиотекой) в рабочей области Eclipse. Что вам нужно сделать, так это просто щелкнуть правой кнопкой мыши по проекту в Eclipse и перейти в раздел Properties-> Android-> Library, щелкнуть над ним и выбрать проект ZXing android (который должен быть помечен как библиотека).

licensed under cc by-sa 3.0 with attribution.