2016-07-21 11 views
0

2つのソースツリー(クライアントとメイン)を持つプロジェクトがあります。メインはJava 1.8のコンストラクトを含む一方、クライアントはJava 1.7にコンパイルする必要があります。私は定義された以下のGradleのソースセットしている:私はcompileMainJava要素をコメントアウトした場合、私はこのどのようにソースとターゲットの互換性を異なるソースセットに設定するのですか

:compileJavawarning: [options] bootstrap class path not set in conjunction with -source 1.7 
C:\dev\eclipse-ws\generic\IoT-Sound\src\main\java\com\ibm\watson\iot\sound\feature\mfcc\MFCCFeatureExtractor.java:129: error: method references are not supported in -source 1.7 
       double[] x = Stream.of(xDataBoxed).mapToDouble(Double::doubleValue).toArray(); 

(use -source 8 or higher to enable method references) 

を得るため、

sourceSets { 
main { 
    java { 
     srcDir "src/main/java" 
     srcDir "src/client/java" 
    } 
} 
    compileMainJava { 
     sourceCompatibility = "1.8" 
     targetCompatibility = "1.8" 
    } 

client { 
    java { 
     srcDir "src/client/java" 
    } 
} 
    compileClientJava { 
     sourceCompatibility = "1.7" 
     targetCompatibility = "1.7" 
    } 
} 

しかし、メインソースセットは明らかに1.7でコンパイルされ、それは両方のビルド私はcompileClientJava(エラーなし)に対して同じ警告を得るので、クライアントを1.7にコンパイルするようです。私は1.8 jdkを使用しているためだと思いますが、とにかくこれらの属性を追加したいと思います。

私はどのようにしてメイン互換性を1.8に設定し、クライアントを1.7に設定するのですか?ありがとう。

答えて

1

同じprojectに2つの言語バージョンを使用することはできません。つまり、異なるJavaバージョンを持つ他のモジュールを持つことができます。あなたはproject(':client')あなたがclient/build.gradle

compileJava { 
    sourceCompatibility = JavaVersion.VERSION_1_7 
    targetCompatibility = JavaVersion.VERSION_1_7 
} 

でそれを設定することができますJava 7になりたい場合は、おそらく今、3つのモジュール

:client 
:main 
:common 

をしたい。この場合

その後でJava 8であるためにあなたのproject(':main')を定義しますmain/build.gradle

compileJava { 
    sourceCompatibility = JavaVersion.VERSION_1_8 
    targetCompatibility = JavaVersion.VERSION_1_8 
} 

project(':common')Java 7を必ず使用するか、クライアントはcommonによって生成されたjava 8バイトコードの読み方を知りません。

関連する問題