当前位置: 首页 > 知识库问答 >
问题:

Gradle java9无法使用工具链锁定平台:JavaSE 9:JDK 8(1.8)

童铭晨
2023-03-14

我想在eclipse内部的gradle项目中使用java9。当我跑步时:

Run as> Gradle Test on  GreeterTest.java

使用以下代码:

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());
    }
}

I类测试为:

package hello;

public class Greeter {
  public String sayHello() {
    return "Hello world!";
  }
}

我收到了错误信息

无法使用工具链“JDK 8(1.8)”以平台“Java SE 9”为目标。

我的日食。初始化是

-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/

我已经添加了JAVA_HOME

我已经添加了构建路径

我已经更改了编译参数

我已经在构建中设置了编译参数。格拉德尔。

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'
}

我必须做什么才能让它运行?

共有3个答案

史弘致
2023-03-14

我更改了java\u主页并升级了Gradle。现在它正在工作。

柯易安
2023-03-14

从我看来,这是格拉德尔版本的问题。(Gradle和Java9兼容性问题)。

您需要将包装器升级到4.3.1,cli ref:

# upgrade Gradle to 4.3.1 
gradle wrapper --gradle-version 4.3.1 # not ./gradlew

让我知道这是否有效。

杨安歌
2023-03-14

您可能应该尝试更新eclipse中使用的系统变量和JAVA版本中的JAVA\u HOME,以便与

JAVA_HOME=/path/to/jdk9

在MacOSX中,类似于:

JAVA_HOME = /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/bin

如评论中所述,Linux上的默认路径为:

/usr/lib/jvm/java-9-openjdk
 类似资料:
  • 我需要将项目中的targetSdkVersion从29更改为30,所以我必须在项目中使用Java11。在build.gradle(:app)中,我改变了 到 我为IntelliJ(在gradle设置中更改sdk版本)找到了一些解决这类问题的方法,但没有为Android Studio找到。

  • 我正在尝试使用本地Gradle发行版导入Intellij Idea中的Gradle项目,并获取stacktrace,其中包含以下消息:。有人能解释一下原因吗?

  • 问题内容: 我试图导入摇篮项目的IntelliJ IDEA与当地摇篮DISTRIB并得到堆栈跟踪与以下消息:。谁能解释一下可能是什么原因? 问题答案: 最后,我导入了Gradle项目。这些步骤是: 我从本地Gradle分发服务器切换到Intellij Idea Gradle包装器(等级2.14)。 我将系统变量指向 JDK 8 (之前是第7位),因为我通过实验发现Gradle Wrapper只能使

  • 问题内容: 请有人帮我解决这个问题,我有一个Ubuntu服务器(仅终端机),我下载了android SDK,我安装了java,在/ tools中尝试运行./android时遇到错误,缺少平台工具。那么,由于某些原因,我如何从终端安装平台工具,却无法在任何地方找到此信息。 我发现的每个资源都假设我有一个GUI而不是终端,甚至是ubuntu的页面-https: //help.ubuntu.com/co

  • 关键词影响力,是百度搜索资源平台针对站点对于关键词数据分析的需求,推出的全新概念。涵盖该关键词下百度搜索可以为站点带来的全部收益指标,包括:排名、百度搜索流量、展现量等。在H5版本的搜索资源平台工具中首发的关键词影响力工具检测数值有:整体影响力、最大影响力、站点影响力。

  • 我想用toolchain版本4.4.3(用于工作armeabi libs) 我下载了最新的Android SDK、NDK和其他所需的工具 我还下载了ndk-legacy-toolschains并复制了“path_to_ndk/toolchains”下的内容 我试图用下面的脚本配置qt5 但是它失败了:无法检测Android NDK工具链。请使用-android-toolchain-version指