NoSuchFieldError:使用ZXing库的MARGIN

时间:2017-05-04 10:06:34

标签: java qr-code zxing

我使用ZXing库生成QR码,我试图通过这种方式将MARGIN属性设置为1:

Map<EncodeHintType, Object> hintMap = new EnumMap<EncodeHintType, Object>(EncodeHintType.class);
hintMap.put(EncodeHintType.CHARACTER_SET, "UTF-8");

hintMap.put(EncodeHintType.MARGIN, 1); // java.lang.NoSuchFieldError: MARGIN
hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.Q);

QRCodeWriter qrCodeWriter = new QRCodeWriter();
BitMatrix byteMatrix = qrCodeWriter.encode(contents, BarcodeFormat.QR_CODE, 100, 100, hintMap);

但我得到了java.lang.NoSuchFieldError: MARGIN。我使用的是2.3.0版本:

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

我还用Eclipse检查了EncodeHintType.class,并且有MARGIN属性!我不明白发生了什么。

任何帮助将不胜感激,提前谢谢!

1 个答案:

答案 0 :(得分:0)

this answer的启发,我发现我在Tomcat服务器上安装了这个库的两个不同版本:core-2.0core-2.3.0。我的代码在运行时2.0版本而不是2.3.0使用。

我从Tomcat中删除了core-2.0.jar,现在它正在运行! :)