You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven项目引入ZXing报NoClassDefFoundError:WriterException问题咨询

项目背景

当前尝试开发二维码生成功能,用于存储学号、姓名、本地计算机MAC地址等信息(现阶段先在桌面电脑测试,后续将部署到各台树莓派设备运行)。

问题相关错误

错误截图

相关Java代码

注:代码中的数据链接仅为测试使用,可忽略。

public static void main(String[] args) throws Exception
{        
    MACFinder GM = new MACFinder();
    GM.getMac();
    
    System.out.println();
    
    try
    {
        GM.generateQRCodeImage();
    }
    catch (WriterException e)
    {
        System.out.println("二维码生成失败,触发WriterException异常");
    }
    catch (IOException e)
    {
        System.out.println("二维码生成失败,触发IOException异常");
    }
    catch (NotFoundException e)
    {
        System.out.println("未找到ZXing相关类库");
    }
}

public void generateQRCodeImage() throws WriterException, IOException, NotFoundException
{
    String data = "https://www.youtube.com/watch?v=qzYpgbP8RHA";
    String filepath = "C:\\Users\\JmJ23\\Documents\\Code\\Internship Code";
    
    QRCodeWriter qrCodeWriter = new QRCodeWriter();
    BitMatrix bitMatrix = qrCodeWriter.encode(data, BarcodeFormat.QR_CODE, 250, 250);

    Path path = FileSystems.getDefault().getPath(filepath);
    MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);
}

POM.xml依赖配置

<dependency>  
    <groupId>com.google.zxing</groupId>  
    <artifactId>core</artifactId>  
    <version>3.3.0</version>  
</dependency> 

<dependency>  
    <groupId>com.google.zxing</groupId>  
    <artifactId>javase</artifactId>  
    <version>3.3.0</version>  
</dependency>

排查方案

已配置Maven依赖仍触发NoClassDefFoundError,本质是运行时类路径未加载到ZXing对应类,按以下优先级逐一排查:

  • 检查Maven依赖拉取状态:打开IDE的Maven面板执行重新加载项目,进入本地Maven仓库com/google/zxing目录,确认3.3.0版本的core、javase两个jar包完整存在;若目录下存在.lastUpdated后缀的损坏缓存文件,直接删除整个zxing目录后重新拉取依赖。
  • 检查运行时类路径配置:如果是直接在IDE中运行main方法,打开对应运行配置,确认两个ZXing依赖没有被设置为Provided作用域,且已被勾选加入运行时类路径。
  • 修正代码路径错误:当前定义的filepath仅为文件夹路径,未指定最终生成的二维码文件名,MatrixToImageWriter.writeToPath方法要求传入完整的文件路径而非目录,需修改为类似C:\\Users\\JmJ23\\Documents\\Code\\Internship Code\\qrcode.png的格式,否则类加载正常后也会抛出IO异常。
  • 打包运行场景检查:如果是将项目打包为jar后运行报错,需要在pom.xml中配置maven-shade-plugin或maven-assembly-plugin将第三方依赖打入最终jar包,默认maven打包逻辑不会包含第三方依赖,运行时必然找不到类。
  • 依赖冲突排查:在项目根目录执行mvn dependency:tree命令查看依赖树,确认是否有其他依赖引入了不同版本的ZXing包导致类版本冲突,若存在冲突版本直接用exclusion标签排除即可。

内容的提问来源于stack exchange,提问作者johnl5124

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 19:06:44