java-错误,包括Bouncycastle提供程序

我需要在项目中使用Bouncycastle提供程序库.

我已经将它包括在gradle项目中.

apply plugin: 'application'
sourceCompatibility = '1.6'
version = '1.0.0'
mainClassName = 'path.to.main.file'

    dependencies {
        compile "org.mariadb.jdbc:mariadb-java-client:+"
        compile "org.bouncycastle:bcprov-jdk16:+"
        compile "commons-codec:commons-codec:+"
        testCompile "junit:junit:+"
    }

项目构建成功.但是当我尝试运行该项目时.它找不到弹跳城堡

Exception in thread "main" java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider
    at com.example.Server.main(Server.java:50)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.jce.provider.BouncyCastleProvider
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 6 more

我该如何解决?

最佳答案
您可能无法正确运行应用程序.
如果仅使用java -jar foo.jar运行创建的JAR,则会在运行时错过所有依赖项.
您必须将这些依赖项添加到类路径中.

您有多种方法可以做到这一点.
例如您可以创建一个胖的JAR,在其中使用Gradle插件将所有依赖项重新打包到最终的JAR中(有几个,但是我根本不喜欢这种解决方案,因此我无法推荐其中一种).
或者可以. G.应用应用程序插件,然后您可以使用run任务正确运行您的应用程序,并使用distZip任务获取与您的应用程序,所有依赖项和正确设置运行时类路径的启动脚本有关的现成分发ZIP.
或者可以. G.使用java -cp foo.jar; other.jar; another.jar your.main.Class手动执行此操作.

转载注明原文:java-错误,包括Bouncycastle提供程序 - 代码日志