2017-11-26 15 views
5

Tôi muốn sử dụng java9 trên dự án gradle bên trong eclipse oxygen. Khi tôi chạy:gradle java9 Không thể nhắm mục tiêu nền tảng: 'Java SE 9' bằng cách sử dụng chuỗi công cụ: 'JDK 8 (1.8)'

Run as> Gradle Test on GreeterTest.java 

với đoạn mã sau:

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

và với lớp tôi thử nghiệm như:

package hello; 

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

Tôi nhận được thông báo lỗi

Không thể nhắm mục tiêu nền tảng: 'Java SE 9' sử dụng chuỗi công cụ: 'JDK 8 (1.8)'.

eclipse.init tôi là

-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 
[email protected]/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 added JAVA_HOME

I have added the build path

I have change the compile parameter

Tôi đã đặt tham số biên dịch trong 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' 
} 

Tôi phải làm gì để có được điều này để chạy?

+0

làm thế nào về cli với './gradlew clean build', nó có phù hợp với bạn không? – chenrui

+0

Với Intellij mới nhất, có vẻ như làm việc tốt cho tôi. – chenrui

+0

Bạn chưa cài đặt Java9 SDK trên máy và cũng không được cài đặt là JAVA_HOME + JAVA_PATH –

Trả lời

0

Từ những gì tôi có thể thấy, đó là vấn đề phiên bản Gradle. (Gradle and Java 9 compatibility issue).

Bạn cần phải nâng cấp các wrapper để 4.3.1, ref cli:

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

Hãy cho tôi biết nếu mà làm việc.

1

Bạn có lẽ nên cố gắng cập nhật phiên bản JAVA_HOME trong các biến hệ thống và Java của bạn được sử dụng trong nhật thực để phù hợp với

JAVA_HOME=/path/to/jdk9 

Trong MacOSX, một cái gì đó như:

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

Tôi đã thay đổi java_home và nâng cấp Gradle. Bây giờ nó đang làm việc.

+0

Việc cắm buidship trong eclips oxygen không được nâng cấp lên JAVA 9 vì vậy tôi phải sử dụng Java8 –

Các vấn đề liên quan