我有一个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”
答案 0 :(得分:2)
NoSuchMethodErrors通常表示版本不匹配。 仅当编译器和执行该编译器的jvm看到不同的方法签名时,才会发生这种情况。
就您而言,我怀疑java
是不同于Netbeans提供的jvm。打开Netbeans文件夹并查找Java安装。使用该安装程序可能会获得owkr。
请注意,sun。*软件包是专有的Sun API,因此很有可能在Java安装中不可用(例如oracle jvm与openJDK jvm)。 或者您可能正在使用java-8之后的jvm,在那里他们更改了一些内容(删除了一些类,这些类需要启用或删除其他类。)
换句话说:如果有机会,请尝试寻找Sun包裹的替代品。