账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    使用ZXing生成二维码,识别JVM版本的时候出错?
    128
    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么,应该如何修改?为什么之前可以运行?
    请各位前辈指导。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • ZXing(Zebra Crossing)是一个开源的、多语言的二维码生成与识别库,它并不直接识别JVM版本,而是用于生成和解析二维码。

      如果你在使用ZXing过程中遇到问题,可能是以下几种情况:

      1. 依赖版本问题:确认你使用的ZXing版本与你的JVM版本兼容。如果JVM版本过低或者过高,可能无法正常运行部分ZXing的功能。

      2. 编码问题:在生成或解析包含特定JVM版本信息的二维码时,如果数据编码格式选择不当,可能会导致解析失败。请确保数据内容按照正确的编码格式进行编解码。

      3. 使用方式错误:在调用ZXing API生成或解析二维码时,如果参数设置不正确,也可能导致错误。例如,如果你尝试将JVM版本信息编码为二维码,但没有正确设置内容类型或格式,就可能导致生成或解析失败。

      4. JVM环境问题:如果JVM本身存在故障或配置问题,也可能影响到ZXing的正常运行。

      具体的问题需要查看错误堆栈信息来进一步分析和定位。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部