微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

设备正常工作但不在内置 jar 中

如何解决设备正常工作但不在内置 jar 中

我有一个使用护照阅读器扫描文档的项目,正确的使用方法是在开始使用之前初始化设备。事实是当我运行我的项目来测试它时(我在 Win10 上使用 Intellij),它工作得很好,没有问题,但是当我构建一个 jar 来导出它(包括护照阅读器库)时,会显示下一条消息:

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "<local2>" is null
at Pr22.DocumentReaderDevice.init(UnkNown Source)
at Pr22.DocumentReaderDevice.<init>(UnkNown Source)
at Testing.PassportReaderOpen.main(PassportReaderOpen.java:15)

我在我的类 PassportReader.java 中第一次使用库对象 (Pr22.jar) 时,我查看了该方法是异常点和崩溃,但我找不到关于“local2”字符串的任何信息.

为了让您了解上下文,这是 PassportReader 类:

package Testing;

import Pr22.DocScanner;
import Pr22.DocumentReaderDevice;
import PrIns.Exceptions.General;

public class PassportReaderOpen {

    static DocumentReaderDevice documentReader = null;
    static DocScanner scanner;

    public static void main(String[] args) {
        try {
            System.out.println("opening device");
            documentReader = new DocumentReaderDevice();
            documentReader.useDevice(0);
            scanner = documentReader.getScanner();
            System.out.println("The device " + documentReader.getDeviceName() + " is opened.");
            documentReader.close();
            System.out.println("Device closed");
        } catch (General general) {
            general.printstacktrace();
        }
    }

}

如您所见,崩溃发生在声明对象之后,因此库 Pr22 应该包含在构建的 jar 中,对吗?

解决方法

好的,我解决了,我在工件构建器中使用“提取到目标 jar”选项导出 jar,护照阅读器中的 Pr.jar 从未在类路径中,所以我的应用程序 jar 找不到它.将该选项更改为“复制到输出目录并通过清单链接”并将我的 Pr.jar 放在我最近构建的应用程序 jar 的根目录中即可。

给你:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。