繁体   English   中英

无法通过 Gradle 构建 Fat Jar

[英]Unable to build a Fat Jar via Gradle

当我尝试将 API 密钥连接到给定应用程序时,该应用程序崩溃并且出现以下错误:

java.lang.reflect.InaccessibleObjectException: Unable to make field private static volatile java.net.Authenticator java.net.Authenticator.theAuthenticator accessible: module java.base does not "opens java.net" to unnamed module @6f1eab88

我现在意识到我需要“为我的平台构建一个特定的二进制文件 (JAR)”。 我已经尝试了几个小时,但说实话不知道该怎么做。 任何帮助,将不胜感激。

眼镜:

MacOS 大苏尔 v11.6.8

Java v17.0.5

摇篮 v7.6

自制软件 v3.6.16

项目的 GitHub 链接: https ://github.com/quantverse/ptltrader

构建说明在“README.md”文件中。

我通常通过终端运行 JAR 文件并且它工作正常,直到我尝试通过 API 连接到网站,此时应用程序崩溃。 当我尝试运行任何 Gradle 函数时,没有任何效果,因为它是一个 JAR 文件。

我下载了 .zip 文件并尝试再次运行 Gradle,但出现了几个错误。 我相信这些是由于代码是在 2012 年编写的,因此已经过时了。 按照 stackoverflow 的建议替换几行代码后(例如“testImplementation”而不是“testCompile”和“doLast”而不是“<<”),我尝试按照源代码的建议运行gradle./gradlew run ,并收到以下错误:

Task './gradlew' not found in root project 'PTLTrader'.

当我尝试gradle run时,出现以下错误:

> Process 'command '/usr/local/Cellar/openjdk@17/17.0.5/libexec/openjdk.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1

在这一点上,我放弃了,因为我不知道我还能做什么。 我尝试将 JAR 文件移动到目录中以与其余的 zip 文件一起运行它,但是发生了相同的错误/无法连接到网站 API。

我克隆了您的存储库并可以成功构建,如下所示:

Project/gradle/wrapper gradle-wrapper.properties的 gradle-wrapper.properties 中,我将该项目的本地 distributionUrl 更改为:

distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-bin.zip (其他版本如gradle-5.1.1-bin.zip应该也可以,但没测试。

使用./gradlew build再次运行一个任务并得到这个错误:

Could not find method leftShift() for arguments [build_77lj9mcapfpzvdg4mdx64jy00$_run_closure7@5775175c] on task ':swtDiag' of type org.gradle.api.DefaultTask.

前往 Project/build.gradle 并删除task swtDiag上的<< ,该任务已在 5.0 版中弃用:

现在看起来像这样:

task swtDiag  {
    println 'archSpec: ' + archSpec
    println 'swtWindowingLibrary: ' + swtWindowingLibrary
    println 'swtArch: ' + swtArch
    println 'swtPlatform: ' + swtPlatform
    
}

BUILD SUCCESSFUL in 1m 21s
3 actionable tasks: 3 executed

PS:一定要使用./gradlew 运行。 这是您的项目特定的 gradle 配置,而不是系统范围的配置。 ./gradlew build./gradlew run都运行良好。

参考:

关于我失败的构建错误的文档

distributionUrl 不匹配

.,. 正如 github README.md 文档所建议的,您需要使用较旧的 JDK 版本。

请参阅: https ://github.com/quantverse/ptltrader#prerequisites

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM