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.