我目前正在代理后面运行一些 REST 调用,因此我需要遵循一些严格的流程才能使调用通过。
以前我在 Eclipse 中构建 POC,但现在我知道它可以工作,我正在尝试将它与 Gradle 一起转移到 IntelliJ(个人最喜欢的 IDEA)以实现构建自动化。
我让项目编译,导出所有依赖项等......但是当我在 IntelliJ 中运行它时,我得到一个“未找到证书错误”。然而,附带说明一下,如果我使用“java-jar MyJar.jar”执行编译的 Jar 文件(来自 gradle),它会完美运行并且不会引发 cert 错误。这里的关键是,如果我只使用 IntelliJ 之外的 gradle 任务执行 Jar,它可以工作,但如果我尝试在 IntelliJ 中构建后立即执行任务,它会失败。
作品:
- 通过 CLI 手动执行从 Gradle 构建任务创建的 jar
- 使用“gradle runMain”VIA CLI 执行下面的 gradle 任务
不起作用: - 在 IntelliJ 中执行构建任务并在构建任务结束时调用“runMain”
我目前的理论是,通过 java -jar 和 gradle runMain 运行它会导致 JVM 使用默认的 cacerts“/jre_xxx/libs/security/cacerts”(我已经添加了证书)但是当我在 IntelliJ 中执行 Jar对于 Gradle,它使用不同的位置。我还将证书添加到“C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 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"
]
}
运行这个 VIA CLI 似乎可以工作,但不能使用 IntelliJ 中的 Gradle 构建任务。
任何帮助将不胜感激。
编辑:我只在 IntelliJ 中运行它时得到的错误(PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效认证路径)