2014-07-25 1 views
2

특정 JVM으로 스칼라 컴파일을 실행하고 싶습니다. Scalatra를 사용하고 있으며 기본 JVM은 1.8입니다. 이러한 설정을 사용하면이 문제가 발생합니다. Compilation failed: error while loading AnnotatedElement, ConcurrentMap, CharSequence from Java 8 under Scala 2.10?gradles의 스칼라 플러그인이 설치된 JVM 중에서 특정 JVM을 선택하도록 지시하는 방법은 무엇입니까?

이렇게 JVM 1.7을 사용하려면 gradle "scala"플러그인을 어떻게 설정해야합니까?

답변

1

gradles의 스칼라 플러그인이 설치된 JVM 중에서 특정 JVM을 선택하도록하는 방법은 무엇입니까?

이것은 현재 지원되지 않습니다. 가장 좋은 해결책은 원하는 JVM으로 Gradle 자체를 실행하는 것입니다. (JVM의 문서를 참조) 대신 ...

tasks.withType(ScalaCompile) { 
    scalaCompileOptions.with { 
     useAnt = false 
     fork = true 
     forkOptions.jvmArgs = [...] 
    } 
} 

를 통해 다른 JVM의 부트 스트랩 클래스 경로를 설정하기 위해이 할 수 있습니다 ...하지만 당신은 세부 사항을 직접 파악해야합니다. 또한 JVM 설치 경로를 알아야합니다.

0

scalac 컴파일러는 특별한 매개 변수

-javabootclasspath 경로
재정의 자바 부트 클래스 경로를 가지고있다.
-javaextdirs 경로
Java extdirs 클래스 경로를 덮어 씁니다.

당신은 내가 JVM 내 OS에이 방법을 사용

이 방법은

allprojects { 
    tasks.withType(ScalaCompile) { 
    if (sourceCompatibility == '1.7') { 
     scalaCompileOptions.with { 
      def jdk7rt = new File("$System.env.JAVA7_HOME", "jre/lib/rt.jar").canonicalPath 
      def jdk7ext = new File("$System.env.JAVA7_HOME", "jre/lib/ext").canonicalPath 
      additionalParameters = ["-javabootclasspath $jdk7rt".toString(), "-javaextdirs $jdk7ext".toString()] 
     } 

    } 
    } 
} 

분기 필요하지 않습니다 매개 변수 additionalParameters를 사용 Gradle을의 스칼라 플러그인에서 해당 매개 변수를 전달해야 javafx8을 필요로하는 일부 서브 프로젝트를 JDK8로 컴파일하기위한 기본값으로 1.7. 따라서 귀하의 경우에 효과가 있습니다.