我正在使用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属性在那里!我不明白发生了什么。
任何帮助将不胜感激,在此先感谢!
最佳答案
受this answer的启发,我发现我已经在Tomcat服务器上安装了该库的两个不同版本:core-2.0
和core-2.3.0
。我的代码在运行时2.0版本而不是2.3.0中使用。
我从Tomcat中删除了core-2.0.jar
,现在它可以工作了! :)