Jar无法正常运行,但是程序可以在IDE中运行

时间:2019-12-06 14:08:33

标签: java jar executable-jar

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

干净:

init:

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 / generation-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”

1 个答案:

答案 0 :(得分:2)

NoSuchMethodErrors通常表示版本不匹配。 仅当编译器和执行该编译器的jvm看到不同的方法签名时,才会发生这种情况。

就您而言,我怀疑java是不同于Netbeans提供的jvm。打开Netbeans文件夹并查找Java安装。使用该安装程序可能会获得owkr。

请注意,sun。*软件包是专有的Sun API,因此很有可能在Java安装中不可用(例如oracle jvm与openJDK jvm)。 或者您可能正在使用java-8之后的jvm,在那里他们更改了一些内容(删除了一些类,这些类需要启用或删除其他类。)

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