2017-11-26 6 views
14

を廃止された、I get the warningCompileOptions.bootClasspathプロパティはGradleの4.xのにアップグレードした後

CompileOptions.bootClasspathプロパティが廃止されたとのGradle 5.0で除去される予定です。代わりにCompileOptions.bootstrapClasspathプロパティを使用してください。

私のプロジェクトの1つ。 build.gradlebootClasspathなどと呼ばれるものは表示されません。この警告は何を意味しますか?

警告は、コモンズサブプロジェクトにのみ表示され、コアでは表示されません。

コモンズ/ build.gradle:

apply plugin: 'com.android.library' 

ext { 
    PUBLISH_GROUP_ID = 'com.afollestad.material-dialogs' 
    PUBLISH_ARTIFACT_ID = 'commons' 
    PUBLISH_VERSION = '0.9.2.3' 
    BUILD_TOOLS = "26.0.3" 
    TARGET_SDK = 25 
} 

android { 
    compileSdkVersion TARGET_SDK 
    buildToolsVersion BUILD_TOOLS 

    defaultConfig { 
     minSdkVersion 16 
     targetSdkVersion TARGET_SDK 
     versionCode 1 
     versionName PUBLISH_VERSION 
    } 
    lintOptions { 
     checkReleaseBuilds false 
    } 
} 

dependencies { 
    implementation project(':core') 
} 

// Changes to this block must be applied in core/build.gradle and commons/build.gradle 
task("javadoc", type: Javadoc) { 
    description "Generates Javadoc API documentation for the main source code." 
    source = android.sourceSets.main.java.srcDirs 
    ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar" 
    classpath += files(ext.androidJar) 
    exclude "**/BuildConfig.java" 
    exclude "**/R.java" 
    options.links("http://docs.oracle.com/javase/7/docs/api/"); 
    options.links("http://d.android.com/reference/"); 
} 

コア/ build.gradle:

apply plugin: 'com.android.library' 

ext { 
    PUBLISH_GROUP_ID = 'com.afollestad.material-dialogs' 
    PUBLISH_ARTIFACT_ID = 'core' 
    PUBLISH_VERSION = '0.9.2.3' 
    SUPPORT_LIBRARY_VERSION = '25.4.0' 
    BUILD_TOOLS = "26.0.3" 
    TARGET_SDK = 25 
} 

android { 
    compileSdkVersion TARGET_SDK 
    buildToolsVersion BUILD_TOOLS 

    defaultConfig { 
     minSdkVersion 16 
     targetSdkVersion TARGET_SDK 
     versionCode 1 
     versionName PUBLISH_VERSION 
     consumerProguardFiles 'progress-proguard.txt' 
    } 
    lintOptions { 
     checkReleaseBuilds false 
    } 
} 

dependencies { 
    api "com.android.support:support-v13:$SUPPORT_LIBRARY_VERSION" 
    api "com.android.support:appcompat-v7:$SUPPORT_LIBRARY_VERSION" 
    api "com.android.support:recyclerview-v7:$SUPPORT_LIBRARY_VERSION" 
    api "com.android.support:support-annotations:$SUPPORT_LIBRARY_VERSION" 
    implementation "me.zhanghai.android.materialprogressbar:library:1.4.1" 
} 

// Changes to this block must be applied in core/build.gradle and commons/build.gradle 
task("javadoc", type: Javadoc) { 
    description "Generates Javadoc API documentation for the main source code." 
    source = android.sourceSets.main.java.srcDirs 
    ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar" 
    classpath += files(ext.androidJar) 
    exclude "**/BuildConfig.java" 
    exclude "**/R.java" 
    options.links("http://docs.oracle.com/javase/7/docs/api/"); 
    options.links("http://d.android.com/reference/"); 
} 

答えて

3

私のGradleはbuild.gradleにprintln System.getProperty("java.home")を追加することにより、参照(Ubuntuで/usr/lib/jvm/java-8-openjdk-amd64/jreからOpenJDKの8を使用している。ノーAndroidのメーカーが関与。

私はデフォルト(明示的に1.7にsourceCompatibilitytargetCompatibilityを設定することにより、警告をトリガすることができます値)。警告が消え

android { 

    compileOptions { 
     sourceCompatibility 1.8 
     targetCompatibility 1.8 
    } 
} 

にJavaのバージョンを変更すること。

警告が一つだけprojのために示されている理由それは繰り返されないということです。 commonsalphanumerical orderingのためcoreより前に設定されています。 sourceCompatibilitytargetCompatibilityを1に設定したとき。commonsの場合は8、警告はcoreに移動します。

すべてのプロジェクトでsourceCompatibilitytargetCompatibilityを1.8に設定すると、警告が完全に削除されます。これがあなたのプロジェクトに必要なもので、なぜGradle 4を1.7で無防備に使うことができないのかは、2つの別々の質問です。

7

私はJavaクラスパスと古いJDKについては、このメッセージは、あなたのGradleにこれを追加すると、それを解決すると思います。

android { 

    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_8 
     targetCompatibility JavaVersion.VERSION_1_8 
    } 
} 

Java 9 JDKを使用し、古いものをアンインストールしてプロジェクト構造に組み込むことをお勧めします:File - >Other settings - >Default project structure

enter image description here

可能結論:

デフォルトJDKアンドロイド、スタジオのための上記の画像に示すように、...\Android studio\jre(埋め込みJDK)です。この組み込みJDKには、廃止予定のbootClasspathが含まれています。

bootstrapClasspathを含む新しいJDKを使用するか、compileOptionsを変更すると解決します。

古いJDK(組み込み型)は新しくのグラデルバージョンと互換性がないのはなぜですか?

私には分かりません。

+0

私に正しい方向を指してくれてありがとう。自分の環境に適していないJDK 9ソリューションを除外した提案に基づいて、より詳細な回答を書いています。 –

0

上記以外にも、Javaビルドでエラーが発生する場合があります。参照先:CompileOptions.bootClasspathは、対象となるターゲットシステムに一致するJavaランタイムJARを指している必要があります。ことを意味し、あなたは、Java 6を使用して、サーバー上のプログラムを実行するためにコンパイルしている場合、たとえば、あなたが互換 Java6のランタイムを指すようにbootClasspathを設定する必要があり、すなわち:rt.jar

私は正常に設定このファイルを指すようにプロジェクト変数/環境変数を-UP:

  • BOOT_CLASSPATH

それは通常、の下を除いてJREではなく、JDKに住んでいますフォルダー。プロジェクトのGradleスクリプトで

は、我々は持っている:

[compileJava, compileTestJava, ]*.options*.bootClasspath = BOOT_CLASSPATH 

が明示的に設定してください。しかし、他のスクリプトでは、bootClasspathを明白に設定しておらず、問題のメッセージが残っています。

The CompileOptions.bootClasspath property has been deprecated 
and is scheduled to be removed in Gradle 5.0. Please use the  
CompileOptions.bootstrapClasspath property instead. 

... とにかく。私は、Javaプラグインが何らかのデフォルトの動作としてそれ自体を行っていると推測しています。私はそれは背景の物語だと思います。私は警告を解決するのを助けるかもしれません。

CompileOptions.bootstrapClasspath`

関連する問題