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 包的替代品。
我有一个 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 包的替代品。