7

我目前正在代理后面运行一些 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:无法找到请求目标的有效认证路径)

4

4 回答 4

12

在就我的问题联系 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

于 2018-07-11T16:09:03.717 回答
1

万一有人也遇到这个问题。我已将我的证书添加到 JDK 商店并确保 IntelliJ 正在使用 JDK,但是在尝试下载 JAR 时它仍然会失败。结果我不得不杀死在后台运行的 gradle 守护进程,因为它在 IntelliJ 重新启动之间持续存在。我在 Windows 上,所以ps java | kill在 Powershell 中工作。pkill java将在Linux中工作。

于 2020-11-11T05:28:56.390 回答
0

Ok.. sometimes this could be very minute thing which we tend to overlook is to always use the cacerts file path from your jdk>jre>lib>security folder in to you gradle VMOptions settings.

于 2019-10-17T11:48:10.613 回答
0

使用内置的 IntelliJ-IDEA 插件信任自定义证书:

https://www.jetbrains.com/help/idea/settings-tools-server-certificates.html

于 2021-08-03T20:19:44.207 回答