问题
I am using the QRGen library to generate a ByteArrayOutputStream
for a QR code and the generate a Bitmap image for it.
I have imported the 3 following jars into my project:
- qrgen-1.0.jar
- zxing-core-1.7.jar
- zxing-j2se-1.7.jar
This is the method generating the QR code ByteArray:
public Bitmap qrBitmapFromString(String qrText){
ByteArrayOutputStream out = QRCode.from(qrText).to(ImageType.PNG).withSize(300, 300).stream();
byte[] data = out.toByteArray();
Bitmap bmp = BitmapFactory.decodeByteArray (data,0,data.length, null);
return bmp;
}
But I am getting the following error:
03-05 12:39:31.089: E/AndroidRuntime(1479): FATAL EXCEPTION: main
03-05 12:39:31.089: E/AndroidRuntime(1479): java.lang.NoClassDefFoundError: java.awt.image.BufferedImage
03-05 12:39:31.089: E/AndroidRuntime(1479): at com.google.zxing.client.j2se.MatrixToImageWriter.toBufferedImage(MatrixToImageWriter.java:48)
03-05 12:39:31.089: E/AndroidRuntime(1479): at com.google.zxing.client.j2se.MatrixToImageWriter.writeToStream(MatrixToImageWriter.java:75)
03-05 12:39:31.089: E/AndroidRuntime(1479): at net.glxn.qrgen.QRCode.stream(QRCode.java:99)
03-05 12:39:31.089: E/AndroidRuntime(1479): at co.emuze.emuzepay.PayCardFragment.qrBitmapFromString(PayCardFragment.java:27)
03-05 12:39:31.089: E/AndroidRuntime(1479): at co.emuze.emuzepay.PayCardFragment.onCreateView(PayCardFragment.java:23)
03-05 12:39:31.089: E/AndroidRuntime(1479): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:795)
03-05 12:39:31.089: E/AndroidRuntime(1479): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:998)
03-05 12:39:31.089: E/AndroidRuntime(1479): at android.app.BackStackRecord.run(BackStackRecord.java:622)
03-05 12:39:31.089: E/AndroidRuntime(1479): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1330)
03-05 12:39:31.089: E/AndroidRuntime(1479): at android.app.Activity.performStart(Activity.java:4474)
03-05 12:39:31.089: E/AndroidRuntime(1479): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1928)
03-05 12:39:31.089: E/AndroidRuntime(1479): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
03-05 12:39:31.089: E/AndroidRuntime(1479): at android.app.ActivityThread.access$600(ActivityThread.java:122)
03-05 12:39:31.089: E/AndroidRuntime(1479): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
03-05 12:39:31.089: E/AndroidRuntime(1479): at android.os.Handler.dispatchMessage(Handler.java:99)
03-05 12:39:31.089: E/AndroidRuntime(1479): at android.os.Looper.loop(Looper.java:137)
03-05 12:39:31.089: E/AndroidRuntime(1479): at android.app.ActivityThread.main(ActivityThread.java:4340)
03-05 12:39:31.089: E/AndroidRuntime(1479): at java.lang.reflect.Method.invokeNative(Native Method)
03-05 12:39:31.089: E/AndroidRuntime(1479): at java.lang.reflect.Method.invoke(Method.java:511)
03-05 12:39:31.089: E/AndroidRuntime(1479): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
03-05 12:39:31.089: E/AndroidRuntime(1479): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
03-05 12:39:31.089: E/AndroidRuntime(1479): at dalvik.system.NativeStart.main(Native Method)
What can cause that?
回答1:
The stack trace answers your question. java.awt
classes don't exist in Android. You can't use libraries that use AWT. You can't use QRGen, or at least not this part of it.
回答2:
2.0-SNAPSHOT should solve this https://oss.sonatype.org/content/repositories/snapshots/net/glxn/qrgen/android/2.0-SNAPSHOT/
https://github.com/kenglxn/QRGen
回答3:
2.0-SNAPSHOT works very well on android and has become faster during the last week. An example can be found here: https://github.com/atomfrede/qrgen-android-example
来源:https://stackoverflow.com/questions/15221775/error-when-using-qrgen-library-to-generate-qr-code