gradle java9无法定位平台:'Java SE 9'使用工具链:'JDK 8(1.8)' [英] gradle java9 Could not target platform: 'Java SE 9' using tool chain: 'JDK 8 (1.8)'
问题描述
我想在eclipse氧气里面的gradle项目中使用java9。当我
运行时:
运行为> GreeterTest.java上的Gradle测试
使用以下代码:
package hello.test;
import static org.junit.jupiter.api.Assertions。*;
import org.junit.jupiter.api.Test;
import hello.Greeter;
类GreeterTest {
@Test
void test(){
Greeter greeter = new Greeter();
assertEquals(Hello world,greeter.sayHello());
}
}
并且我测试的类为:
package hello;
公共类Greeter {
public String sayHello(){
returnHello world!;
}
}
我收到错误消息
无法定位平台:'Java SE 9'使用
工具链:'JDK 8(1.8)'。
我的eclipse.init是
-startup ../Eclipse/plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar
--launcher.library /Users/stein/.p2/pool/plugins/org.eclipse。 equinox.launcher.cocoa.macosx.x86_64_\1.1.550.v20170928-1359
-product org.eclipse.epp.package.jee.product
-showsplash org.eclipse.epp.package.common
--launcher.defaultAction openFile
--launcher.a / Library / Java / JavaVirtualMachines / jdk-9.0.1.jdk / Contents / Home / jre / bin
-vmargs
-Dosgi.requiredJavaVersion = 1.9
-Dosgi.instance.area.default=@user.home/eclipse-workspace
-XX:+ UseG1GC
-XX:+ UseStringDeduplication
--add-modules = ALL-SYSTEM
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.sm allFonts
-Dosgi.requiredJavaVersion = 1.9
-Xms256m
-Xmx1024m
--add-modules = ALL-SYSTEM
-Xdock:icon = .. / Resources / Eclipse.icns
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts
-Declipse.p2.max.threads = 10
-Doomph.update.url = http://download.eclipse.org/oomph/updates/milestone/latest
-Doomph.redirection.index.redirection = index:/ - > http://git.eclipse.org/c/oomph/或者是.gclipse./ a href =https://i.stack.imgur.com/odTl9.png =noreferrer>我添加了JAVA_HOME
< a href =https://i.stack.imgur.com/y46c8.png =noreferrer>我添加了构建路径
我在Build.Gradle中设置了编译参数。
buildscript {
r epositories {
mavenCentral()
}
依赖项{
classpath'org.junit.platform:junit-platform-gradle-plugin:1.0.2'
}
}
存储库{
mavenCentral()
}
ext.junit4Version ='4.12'
ext.junitVintageVersion =' 4.12.2'
ext.junitPlatformVersion ='1.0.2'
ext.junitJupiterVersion ='5.0.2'
ext.log4jVersion ='2.9.0'
apply plugin:'java'
apply plugin:'eclipse'
apply plugin:'org.junit.platform.gradle.plugin'
jar {
baseName ='junit5-gradle-consumer'
version ='1.0.0-SNAPSHOT'
}
compileJava {
sourceCompatibility = 9
targetCompatibility = 9
}
compileTestJava {
sourceCompatibility = 9
targetCompatibility = 9
options.compilerArgs + ='-parameters'
}
junitPlatform {
//平台ormVersion'1.0.2'
过滤{
引擎{
//包括'junit-jupiter','junit-vintage'
//排除'custom-engine'
}
标签{
//包括'快'
排除'慢'
}
// includeClassNamePattern'。*测试'
}
// configurationParameter'junit.jupiter.conditions.deactivate','*'
// enableStandardTestTask true
// reportsDir文件('build / test-results / junit-platform')//这是默认的
logManager'org.apache.logging.log4j.jul.LogManager'
}
依赖项{
// JUnit Jupiter API和TestEngine实现
testCompile(org.junit.jupiter:junit-jupiter-api:$ {junitJupiterVersion})
testRuntime(org.junit.jupiter:junit-jupiter-engine:$ {junitJupiterVersion})
//如果你还想支持JUnit 3和JUnit 4测试
te stCompile(junit:junit:$ {junit4Version})
testRuntime(org.junit.vintage:junit-vintage-engine:$ {junitVintageVersion})
//要避免关于JUnit代码中的@API注释的编译器警告
//testCompileOnly('org.apiguardian:apiguardian-api:1.0.0')
//使用Log4J的LogManager
testRuntime (org.apache.logging.log4j:log4j-core:$ {log4jVersion})
testRuntime(org.apache.logging.log4j:log4j-jul:$ {log4jVersion})
//只需要在捆绑旧版本的(IntelliJ)IDE(A)中运行测试
testRuntime(org.junit.platform:junit-platform- launcher:$ {junitPlatformVersion})
}
任务包装器(类型:包装器){
description ='生成gradlew [.bat]脚本'
gradleVersion ='4.1'
}
我该怎么办才能让它运行?
解决方案你可能应该尝试更新系统变量中的
JAVA_HOME
和
eclipse中使用的Java版本与
$ bJAVA_HOME = / path / to / jdk9
在MacOSX中,有些东西喜欢:
JAVA_HOME = /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/bin
as 在评论中通知,Linux上的默认路径为:
/ usr / lib / jvm / java-9-openjdk
I want to use java9 on my gradle project inside eclipse oxygen. When I run:
Run as> Gradle Test on GreeterTest.java
with the following code:
package hello.test; import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.Test; import hello.Greeter; class GreeterTest { @Test void test() { Greeter greeter = new Greeter(); assertEquals("Hello world", greeter.sayHello()); } }
and with the class I test as:
package hello; public class Greeter { public String sayHello() { return "Hello world!"; } }
I get the error message
Could not target platform: 'Java SE 9' using tool chain: 'JDK 8 (1.8)'.
My eclipse.init is
-startup ../Eclipse/plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar --launcher.library /Users/stein/.p2/pool/plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_\1.1.550.v20170928-1359 -product org.eclipse.epp.package.jee.product -showsplash org.eclipse.epp.package.common --launcher.defaultAction openFile --launcher.a/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/jre/bin -vmargs -Dosgi.requiredJavaVersion=1.9 -Dosgi.instance.area.default=@user.home/eclipse-workspace -XX:+UseG1GC -XX:+UseStringDeduplication --add-modules=ALL-SYSTEM -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts -Dosgi.requiredJavaVersion=1.9 -Xms256m -Xmx1024m --add-modules=ALL-SYSTEM -Xdock:icon=../Resources/Eclipse.icns -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts -Declipse.p2.max.threads=10 -Doomph.update.url=http://download.eclipse.org/oomph/updates/milestone/latest -Doomph.redirection.index.redirection=index:/->http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/
I have change the compile parameter
I have set the compile parameter in the Build.Gradle.
buildscript { repositories { mavenCentral() } dependencies { classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.2' } } repositories { mavenCentral() } ext.junit4Version = '4.12' ext.junitVintageVersion = '4.12.2' ext.junitPlatformVersion = '1.0.2' ext.junitJupiterVersion = '5.0.2' ext.log4jVersion = '2.9.0' apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'org.junit.platform.gradle.plugin' jar { baseName = 'junit5-gradle-consumer' version = '1.0.0-SNAPSHOT' } compileJava { sourceCompatibility = 9 targetCompatibility = 9 } compileTestJava { sourceCompatibility = 9 targetCompatibility = 9 options.compilerArgs += '-parameters' } junitPlatform { // platformVersion '1.0.2' filters { engines { // include 'junit-jupiter', 'junit-vintage' // exclude 'custom-engine' } tags { // include 'fast' exclude 'slow' } // includeClassNamePattern '.*Test' } // configurationParameter 'junit.jupiter.conditions.deactivate', '*' // enableStandardTestTask true // reportsDir file('build/test-results/junit-platform') // this is the default logManager 'org.apache.logging.log4j.jul.LogManager' } dependencies { // JUnit Jupiter API and TestEngine implementation testCompile("org.junit.jupiter:junit-jupiter-api:${junitJupiterVersion}") testRuntime("org.junit.jupiter:junit-jupiter-engine:${junitJupiterVersion}") // If you also want to support JUnit 3 and JUnit 4 tests testCompile("junit:junit:${junit4Version}") testRuntime("org.junit.vintage:junit-vintage-engine:${junitVintageVersion}") // To avoid compiler warnings about @API annotations in JUnit code //testCompileOnly('org.apiguardian:apiguardian-api:1.0.0') // To use Log4J's LogManager testRuntime("org.apache.logging.log4j:log4j-core:${log4jVersion}") testRuntime("org.apache.logging.log4j:log4j-jul:${log4jVersion}") // Only needed to run tests in an (IntelliJ) IDE(A) that bundles an older version testRuntime("org.junit.platform:junit-platform- launcher:${junitPlatformVersion}") } task wrapper(type: Wrapper) { description = 'Generates gradlew[.bat] scripts' gradleVersion = '4.1' }
What must I do to get this to run?
解决方案You should probably try to update your
JAVA_HOME
in system variables and Java version used in eclipse to be consistent toJAVA_HOME=/path/to/jdk9
In MacOSX, something like :
JAVA_HOME = /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/bin
As informed in comments, the default path on Linux would be :
/usr/lib/jvm/java-9-openjdk
这篇关于gradle java9无法定位平台:'Java SE 9'使用工具链:'JDK 8(1.8)'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!