com.sun.crypto.provider.SunJCE 的 NoClassDefFoundError
NoClassDefFoundError for com.sun.crypto.provider.SunJCE
我写了一个小程序,它 运行 在 eclipse 中是正确的,但是当我创建一个 jar 并尝试 运行 相同的代码时,我得到 Exception in thread "main" java.lang.NoClassDefFoundError: com.sun.crypto.provider.SunJCE
请建议。
谢谢
确保:
- 当您 运行 jar 时,您正在使用 Oracle 的 Java SE。默认情况下,其他 JVM 没有此提供程序。
- 您已经在 JVM 运行安装 jar
上安装了 java 无限权限策略文件
请注意,您可以使用以下代码检查可用的提供程序和算法:
import java.security.Provider;
import java.security.Security;
import java.util.Enumeration;
public class MainClass {
public static void main(String[] args) throws Exception {
try {
Provider p[] = Security.getProviders();
for (int i = 0; i < p.length; i++) {
System.out.println(p[i]);
for (Enumeration e = p[i].keys(); e.hasMoreElements();)
System.out.println("\t" + e.nextElement());
}
} catch (Exception e) {
System.out.println(e);
}
}
}
找到 here.
检查 Jar 文件 sunjce_provider.jar
是否在您的类路径中。通常它在目录 $JAVA_HOME/lib/ext
.
中
我写了一个小程序,它 运行 在 eclipse 中是正确的,但是当我创建一个 jar 并尝试 运行 相同的代码时,我得到 Exception in thread "main" java.lang.NoClassDefFoundError: com.sun.crypto.provider.SunJCE
请建议。
谢谢
确保:
- 当您 运行 jar 时,您正在使用 Oracle 的 Java SE。默认情况下,其他 JVM 没有此提供程序。
- 您已经在 JVM 运行安装 jar 上安装了 java 无限权限策略文件
请注意,您可以使用以下代码检查可用的提供程序和算法:
import java.security.Provider;
import java.security.Security;
import java.util.Enumeration;
public class MainClass {
public static void main(String[] args) throws Exception {
try {
Provider p[] = Security.getProviders();
for (int i = 0; i < p.length; i++) {
System.out.println(p[i]);
for (Enumeration e = p[i].keys(); e.hasMoreElements();)
System.out.println("\t" + e.nextElement());
}
} catch (Exception e) {
System.out.println(e);
}
}
}
找到 here.
检查 Jar 文件 sunjce_provider.jar
是否在您的类路径中。通常它在目录 $JAVA_HOME/lib/ext
.