【问题标题】:Cant build a jar with gradle and jdk 11无法使用 gradle 和 jdk 11 构建 jar
【发布时间】:2019-03-30 04:27:13
【问题描述】:

当我尝试使用 gradle 和 jdk 11 创建 jar 构建时,总是出现以下错误:

10:53:41: Executing task 'build'...

> Task :compileJava
> Task :compileJava UP-TO-DATE
> Task :processResources UP-TO-DATE
> Task :classes UP-TO-DATE
> Task :bootJar UP-TO-DATE
> Task :jar SKIPPED
> Task :assemble UP-TO-DATE
> Task :compileTestJava UP-TO-DATE
> Task :processTestResources NO-SOURCE
> Task :testClasses UP-TO-DATE
> Task :test FAILED
> Task :jacocoTestReport UP-TO-DATE

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':test'.
> failed to read class file /home/rodrigo/Projetos/Gaia/apipessoas/build/classes/java/test/com/rjdesenvolvimento/apipessoas/ApipessoasApplicationTests.class

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
See https://docs.gradle.org/4.8.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 1m 9s
6 actionable tasks: 1 executed, 5 up-to-date
Unsupported class file major version 55
10:54:50: Task execution finished 'build'.

我迷路了,需要帮助。我试图将 mavencentral() 存储库更改为 jcenter,但没有成功。

当我使用 jdk 1.8 时不会出现错误,但是我需要 jdk 11,boss orders = (

添加新信息********************************

13:29:00:正在执行任务“构建”...

任务:编译Java UP-TO-DATE

任务:processResources UP-TO-DATE

任务:课程更新

任务:bootJar UP-TO-DATE

任务:jar

任务:组装

任务:compileTestJava UP-TO-DATE

任务:processTestResources NO-SOURCE

任务:testClasses UP-TO-DATE

任务:测试

警告:发生了非法反射访问操作 警告:org.springframework.cglib.core.ReflectUtils$1 的非法反射访问(文件:/home/rodrigo/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/5.0.9.RELEASE /9f9a828936d81afd49a603bda9cc1aed863a0d85/spring-core-5.0.9.RELEASE.jar) 到方法 java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) 警告:请考虑将此报告给 org.springframework.cglib.core.ReflectUtils$1 的维护者 警告:使用 --illegal-access=warn 启用对进一步非法反射访问操作的警告 警告:所有非法访问操作将在未来版本中被拒绝

com.rjdesenvolvimento.apipessoas.ApipessoasApplicationTests > contextLoads FAILED

java.lang.IllegalStateException

原因:org.springframework.beans.factory.UnsatisfiedDependencyException

原因:org.springframework.beans.factory.UnsatisfiedDependencyException

原因:org.springframework.beans.factory.BeanCreationException

原因:org.springframework.beans.factory.BeanCreationException

原因:org.springframework.beans.factory.BeanCreationException

原因:org.springframework.jdbc.datasource.init.ScriptStatementFailedException

原因:org.postgresql.util.PSQLException

1 个测试完成,1 个失败

任务:测试失败 任务:jacocoTestReport

FAILURE:构建失败并出现异常。

出了什么问题: 任务 ':test' 执行失败。 有失败的测试。请参阅报告:file:///home/rodrigo/Projetos/Gaia/apipessoas/build/reports/tests/test/index.html

尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。

通过https://help.gradle.org获得更多帮助

此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 5.0 不兼容。 使用“--warning-mode all”显示各个弃用警告。 见https://docs.gradle.org/4.10.2/userguide/command_line_interface.html#sec:command_line_warnings

在 10 秒内构建失败 7 个可操作的任务:3 个已执行,4 个最新 有失败的测试。参见报告:file:///home/rodrigo/Projetos/Gaia/apipessoas/build/reports/tests/test/index.html 13:29:11:任务执行完成'build'。

【问题讨论】:

  • 好吧,Task :jar SKIPPED - 尝试强制启用它并修复您的测试类;)
  • 感谢您的回答。现在显示新错误。我在问题中添加了更多细节。

标签: java testing gradle


【解决方案1】:

您使用的是哪个版本的 Gradle?通过查看您的日志,我猜它是4.8.1。根据issues on GitHub 的说法,他们修复了 Gradle 以使其在4.10.2 版本中与 Java 11 一起使用,所以您应该做的就是将 Gradle 升级到此版本或更高版本。如果您使用的是 Gradle 包装器,您只需在项目中编辑 gradle/wrapper/gradle-wrapper.properties 文件,然后将 distributionUrl 更新为以下内容:

distributionUrl=https://services.gradle.org/distributions/gradle-4.10.2-all.zip

说不定你也可以在你的项目目录下通过以下方式进行操作:

gradle wrapper --gradle-version 4.10.2

它应该更新或创建您的gradle-wrapper.properties 文件。

完成后,您可以调用包装器:

./gradlew clean build

【讨论】:

  • 感谢您的回答。现在显示新错误。我在问题中添加了更多细节。
  • 您似乎需要将 Spring 版本升级到 5.1 或更高版本,或者在您的构建中添加其他参数来解决此问题。现在你有 Spring 5.0.9。看到这个答案:stackoverflow.com/a/46671473/1150795
  • 警告消失了。但是上下文加载的错误仍然存​​在。
  • 看看日志。它说:com.rjdesenvolvimento.apipessoas.ApipessoasApplicationTests > contextLoads FAILED java.lang.IllegalStateException Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException。这是您项目中的失败测试。我不知道那里出了什么问题,因为我还没有看到源代码。我想您必须向某个 bean 添加依赖项。我不知道它是集成还是单元测试。在单元测试中,可以模拟这种依赖关系——例如与 Mockito。
猜你喜欢
  • 2020-01-21
  • 1970-01-01
  • 1970-01-01
  • 2020-10-26
  • 1970-01-01
  • 2019-03-05
  • 2019-11-09
  • 1970-01-01
相关资源
最近更新 更多