Jar 不工作但程序在里面工作 IDE

Jar does not work but program works inside IDE

我有一个 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/类

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

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

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

编译:

已创建目录:/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"

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

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

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

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