我有多个项目并使用Gradle 2.4构建.
我想覆盖org.gradle.java.home每个项目中的参数,并尝试为每个项目添加gradle.properties文件并覆盖参数.
我已经设置了主gradle项目org.gradle.java.home=C:/Java/jdk1.6.0并在子项目中覆盖为org.gradle.java.home=C:/Java/jdk1.7.0_45
但它没有按预期工作,我得到了
无效的源代码版本:1.7
错误信息.
有人可以提出如何解决这个问题的想法吗?
这是我的输出gradle -v(在使用包装器的项目中):
$ ./gradlew -v
------------------------------------------------------------
Gradle 5.0
------------------------------------------------------------
Build time: 2018-11-26 11:48:43 UTC
Revision: 7fc6e5abf2fc5fe0824aec8a0f5462664dbcd987
Kotlin DSL: 1.0.4
Kotlin: 1.3.10
Groovy: 2.5.4
Ant: Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM: 11.0.1 (Oracle Corporation 11.0.1+13-LTS)
OS: Linux 3.10.0-862.11.6.el7.x86_64 amd64
Run Code Online (Sandbox Code Playgroud)
尤其是看到这一行:
JVM: 11.0.1 (Oracle Corporation 11.0.1+13-LTS)
Run Code Online (Sandbox Code Playgroud)
我想切换到 OpenJDK 11。所以选择它,如下所示:
# alternatives --config java
There are 4 programs which provide 'java'.
Selection Command
-----------------------------------------------
* 1 /usr/java/jdk-11.0.1/bin/java
+ 2 /usr/local/jdk-11.0.1/bin/java
3 /usr/java/jre1.8.0_191-i586/bin/java
4 /usr/java/jdk1.8.0_191-amd64/jre/bin/java
Enter to keep …Run Code Online (Sandbox Code Playgroud) > Could not target platform: 'Java SE 11' using tool chain: 'JDK 8 (1.8)'
Run Code Online (Sandbox Code Playgroud)
这看起来很奇怪,因为我确实有 Java 11:
$ java --version
openjdk 11.0.8 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu118.04.1)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu118.04.1, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
./gradlew build,我寻找javac,但它只是在一个二进制文件中:$ grep -rn "javac"
Binary file .gradle/4.6/taskHistory/taskHistory.bin matches
Run Code Online (Sandbox Code Playgroud)
在构建 JPostal时,我发出了命令:
./gradlew assemble
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
checking for gcj... no
checking for guavac... no
checking for jikes... no
checking for javac... no
configure: error: no acceptable Java compiler found in $PATH
make: *** No rule to make target 'install'. Stop.
:buildJniLib FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':buildJniLib'.
> Process 'command 'sh'' finished with non-zero exit value 2
Run Code Online (Sandbox Code Playgroud)
问题是我已经将java编译器的正确路径添加到环境变量中。事实上,当我输入时,javac它会显示此 SO 答案中讨论的CMD所有选项。例如,在命令行中键入会显示正确的版本:javacjavac -version …
我首先创建了一个新的颤振项目。
但我收到了这个错误:
* What went wrong:
Execution failed for task ':app:compileDebugKotlin'.
> Kotlin could not find the required JDK tools in the Java installation 'C:\Program Files\Java\jre1.8.0_261' used by Gradle. Make sure Gradle is running on a JDK, not JRE.
* 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
BUILD FAILED in 33s
Exception: Gradle …Run Code Online (Sandbox Code Playgroud) 运行时,./gradlew clean build我收到以下消息:
> Task :compileKotlin FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':compileKotlin'.
> Kotlin could not find the required JDK tools in the Java installation '/usr/lib/jvm/java-8-openjdk-amd64/jre' used by Gradle. Make sure Gradle is running on a JDK, not JRE.
Run Code Online (Sandbox Code Playgroud)
我有JDK,JAVA_HOME设置正确,也是如此update-alternatives。
# java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.16.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
Run Code Online (Sandbox Code Playgroud)
# update-alternatives --config java
There …Run Code Online (Sandbox Code Playgroud) 在 64/32 位本机库的世界中,有时您需要指定特定的 jre 来运行代码。我本地安装了 64/32 位 jres。默认为 64 位,但我需要使用 32 位 jvm 运行一些测试...
我如何告诉 gradle 本地系统上 32 位 java.exe 客户端的路径?它不能是默认为jdk的java_home,我只需要在gradle.build中指定用于测试执行阶段的jre客户端。
就像是
tasks.withType(Test) {
systemProperty "java.library.path", "C:\\here\\nativestuff\\lib"
systemProperty "java.client", "C:\\Program\ Files\ \(x86\)\\Java\\jre7\\bin\\java.exe"}
Run Code Online (Sandbox Code Playgroud)
尝试了我能想到的一切,不知道如何让它工作
我们有一个用 Gradle 构建的 Java 项目,它需要 Java 8 等。开发人员在他们的机器上有不同的 Java 版本(不同的项目,IDEA 一直对 Open JDK 很挑剔,但我们用它来运行我们的应用程序),我们希望能够轻松地使用正确的 Java 版本进行构建。
这个想法是使用 Docker 来完成任务,即使用正确的 Java 版本启动一个 docker 容器并将其用于构建(编译、测试、组装等)。
这是一个好主意吗?我该怎么办?例如,我是否告诉 Gradle 启动容器,并告诉它使用它的 javac?或者我是否启动容器,使用项目代码安装卷,然后在该容器中使用 Gradle 进行构建?这会有一个缺点,即人们需要先启动一个容器,但我想它可以被脚本化。
有没有人做这样的事情?
我当前在 gradle 文件中的配置是
sourceCompatibility = 1.7
targetCompatibility = 1.7
Run Code Online (Sandbox Code Playgroud)
该规范使我的项目特定于 java 1.7。
我的要求是我应该能够为不同的java版本构建我的项目,例如java 1.7和java 1.8
PS:就像在 gradle 中构建配置文件一样,我们可以指定不同的 java 版本。