使用ZXing生成二维码,识别JVM版本的时候出错?

发布于 2022-09-06 09:03:32 字数 3055 浏览 29 评论 0

各位前辈,我使用谷歌的ZXing创建二维码,按照网上的例子写。刚开始可以运行,然后我在其他Service里面打了个断点,调试了一下其他问题,再运行这个地方就报错了。
例子:

        BitMatrix matrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE,width,height,hints);
        Path file = new File("C:/Users/Administrator/Desktop/SpringBoot/img.png").toPath();
        MatrixToImageWriter.writeToPath(matrix,format,file);

错误信息出在这一步:

        MatrixToImageWriter.writeToPath(matrix,format,file);

报错信息是:
Caught and handled this exception :
java.lang.NumberFormatException: For input string: ""

at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:662)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at com.github.jaiimageio.impl.common.ImageUtil.processOnRegistration(ImageUtil.java:1401)
at com.github.jaiimageio.impl.plugins.bmp.BMPImageReaderSpi.onRegistration(BMPImageReaderSpi.java:97)
at java.desktop/javax.imageio.spi.SubRegistry.registerServiceProvider(ServiceRegistry.java:788)
at java.desktop/javax.imageio.spi.ServiceRegistry.registerServiceProvider(ServiceRegistry.java:330)
at java.desktop/javax.imageio.spi.IIORegistry.registerApplicationClasspathSpis(IIORegistry.java:212)
at java.desktop/javax.imageio.spi.IIORegistry.<init>(IIORegistry.java:136)
at java.desktop/javax.imageio.spi.IIORegistry.getDefaultInstance(IIORegistry.java:157)
at java.desktop/javax.imageio.ImageIO.<clinit>(ImageIO.java:66)
at com.google.zxing.client.j2se.MatrixToImageWriter.writeToPath(MatrixToImageWriter.java:129)
at com.google.zxing.client.j2se.MatrixToImageWriter.writeToPath(MatrixToImageWriter.java:100)
at com.scut.originsystem.util.QRCodeUtil.createQRCode(QRCodeUtil.java:42)
at com.scut.originsystem.service.QRCodeService.qRCodeWord(QRCodeService.java:162)
at com.scut.originsystem.service.QRCodeService.asyncQRCodeWord(QRCodeService.java:146)
at com.scut.originsystem.service.QRCodeService$$FastClassBySpringCGLIB$$a6aa6547.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.aop.interceptor.AsyncExecutionInterceptor$1.call(AsyncExecutionInterceptor.java:115)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.lang.Thread.run(Thread.java:844)

报错的源码是:
String jvmVendor = System.getProperty("java.vendor");

    String jvmVersionString = System.getProperty("java.specification.version");
    int verIndex = jvmVersionString.indexOf("1.");
    jvmVersionString = jvmVersionString.substring(verIndex + 2);
    int jvmVersion = Integer.parseInt(jvmVersionString);

这里显示jvmVersionString为空,无法转换为int。
这是API的BUG么,应该如何修改?为什么之前可以运行?
请各位前辈指导。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

星星的轨迹 2022-09-13 09:03:32

问题解决了,ZXing只能识别1.X这种形式的java版本,我的是9.0.X形式的,要System.setProperty("java.specification.version","1.9")就可以运行了

拥有 2022-09-13 09:03:32

请问一下你用的ZXing是哪个版本,具体是用了哪个几个模块???

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文