【问题标题】:Jar does not work but program works inside IDEJar 不工作,但程序在 IDE 中工作
【发布时间】:2019-12-06 14:08:33
【问题描述】:

我有一个 java 程序,它在 IDE 中可以正常工作。但是,当我创建 jar 时,它不起作用。有什么问题?

        StringBuilder builder = new StringBuilder();
    builder.append("name=" + name);
    builder.append(System.getProperty("line.separator"));
    builder.append("library=\"" + library + "\"");
    builder.append(System.getProperty("line.separator"));
    builder.append("slot=" + slot);

    ByteArrayInputStream bais = new ByteArrayInputStream(builder.toString().getBytes());
    /*exception line  */SunPKCS11 provider = new SunPKCS11(bais);


Exception in thread "main" java.lang.NoSuchMethodError: 'void sun.security.pkcs11.SunPKCS11.<init>(java.io.InputStream)'
at JcaProvider.createProvider(JcaProvider.java:70)
at Test.main(Test.java:31)

创建jar时没有错误或警告,有人可以帮助我吗?

更新属性文件:/home/mehmet/works/NetbeansProjects/HSM_Java/build/built-clean.properties 删除目录/home/mehmet/works/NetbeansProjects/HSM_Java/build

干净:

初始化:

deps-jar:

创建的目录:/home/****/****/NetbeansProjects/HSM_Java/build

更新属性文件:/home/****/***/NetbeansProjects/HSM_Java/build/built-jar.properties

创建的目录:/home///NetbeansProjects/HSM_Java/build/classes

创建的目录:/home///NetbeansProjects/HSM_Java/build/empty

创建的目录:/home///NetbeansProjects/HSM_Java/build/generated-sources/ap-source-output

将 5 个源文件编译到 /home///NetbeansProjects/HSM_Java/build/classes

编译:

创建的目录:/home///NetbeansProjects/HSM_Java/dist

将 1 个文件复制到 /home/****/***/NetbeansProjects/HSM_Java/build

没有什么可复制的。

构建 jar:/home/****/***/NetbeansProjects/HSM_Java/dist/HSM_Java.jar

要在没有 Ant 的情况下从命令行运行此应用程序,请尝试: java -jar "/home/****/***/NetbeansProjects/HSM_Java/dist/HSM_Java.jar"

【问题讨论】:

    标签: java jar executable-jar


    【解决方案1】:

    NoSuchMethodErrors 通常表示版本不匹配。 这只有在编译器和执行它的 jvm 看到不同的方法签名时才会发生。

    在您的情况下,我怀疑java 与 Netbeans 提供的 jvm 不同。打开 Netbeans 文件夹并寻找 java 安装。使用该安装可能会 owkr。

    请注意,sun.* 包是专有的 Sun API,因此它很可能在您的 java 安装中不可用(例如 oracle jvm 与 openJDK jvm)。 或者您可能正在使用 post-java-8 jvm,它们更改了一些东西(删除了一些需要启用或其他类的类)。

    换句话说:如果有机会,请尝试寻找太阳包的替代品。

    【讨论】:

    • 确实,InputStream 构造函数从 Java 9 开始就消失了。这似乎是因为获取 Provider 实例是done differently
    猜你喜欢
    • 1970-01-01
    • 2013-12-25
    • 2013-04-09
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    相关资源
    最近更新 更多