97W*_*olo 3 java intellij-idea gradle javaexec-gradle-plugin
我目前正在代理后面运行一些REST调用,因此我需要遵循一些严格的流程才能使调用通过。
以前,我是在Eclipse中为POC进行构建,但是现在我知道它可以工作了,我正尝试将其与Gradle一起转移到IntelliJ(个人喜爱的IDEA)中,以进行构建自动化。
我得到了要编译,导出所有依赖项等的项目,但是在IntelliJ中运行它时,出现“找不到证书错误”。但是,从侧面来看,如果我使用“ java-jar MyJar.jar”执行编译的Jar文件(从gradle中执行),则该文件会完美运行,并且不会抛出cert错误。这里的关键是,如果我仅使用IntelliJ之外的gradle任务执行Jar,它将起作用,但是如果我尝试在IntelliJ中进行构建后立即执行任务,则会失败。
作品:
不起作用:-在IntelliJ中执行构建任务,并在构建任务结束时调用“ runMain”
我当前的理论是通过java -jar和gradle runMain运行它,导致JVM使用默认的cacerts“ / jre_xxx / libs / security / cacerts”(我已经在其中添加了证书),但是当我在IntelliJ中执行Jar时使用Gradle时,它将使用其他位置。我还已将证书添加到“ C:\ Program Files \ JetBrains \ IntelliJ IDEA社区版2018.1.5 \ jre64 \ lib \ security \ cacerts”中,但是在IntelliJ中运行它时,我仍然收到此错误消息。
task(runMain, dependsOn: 'classes', type: JavaExec) {
main = 'com.xxx.xx.x.Utopia'
classpath = sourceSets.main.runtimeClasspath
args=[
"-Djavax.net.ssl.trustStore=C:\\ProgramFiles\\Java\\jre1.8.0_121\\lib\\security\\cacerts"
]
}
Run Code Online (Sandbox Code Playgroud)
运行此VIA CLI似乎可以工作,但不能与IntelliJ中的Gradle构建任务一起使用。
任何帮助将不胜感激。
编辑:我只在IntelliJ中运行它时得到的错误(PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到到请求目标的有效证书路径)
在与JetBrains支持人员联系以解决我的问题后,我意识到了这个问题。从逻辑上讲,我假设JRE将执行JAR文件,仅在运行java -jar my.jar或从CLI执行Gradle时才如此。IntelliJ的工作方式是仅使用JDK,因此我不得不修改JDK中的小型JRE。完成此操作并将其添加到jdk.xxx/jre/lib/security/cacerts中的CACERTS中后,我便能够解决此问题。
https://youtrack.jetbrains.com/issue/IDEA-195428