1

com.sun.image.codec.jpegパッケージとその仲間を使用するコードをコンパイルする必要があります。私は知っています、それは私たちの会社のレガシーコードであり、それをそのままコンパイルする必要があります。私の問題は、Eclipseがこれらのファイルを問題なくコンパイルすることです。IDEA も同じことを行います - コンパイルして動作します。問題はGradleです-次のようなエラーが発生します

error: package com.sun.image.codec.jpeg does not exist

私は知っています--XDignore.symbol.fileコンパイラに追加します。

やった

compileJava.options.compilerArgs.add '-XDignore.symbol.file'

build.grade で詳細モードにすると、パラメーターが正しく渡されることがわかります

20:28:16.148 [DEBUG] [org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler] Compiler arguments: -d C:\workspace\blabla -g -XDignore.symbol.file -classpath C:\workspace\blabla_lots_of_jars.jar  C:\workspace\tons_of_java_files.java
20:28:16.153 [INFO] [org.gradle.api.internal.tasks.compile.jdk6.Jdk6JavaCompiler] Compiling with JDK Java compiler API.

しかし、コンパイルは失敗します。もう1つの質問で、gradleファイルに1行追加する必要があることがわかりました

compileJava.options.useAnt = true

ご想像のとおり、すべてがコンパイルされます。デバッグ ログは少し異なりますが、params も正しく渡されていることを示しています

21:50:34.101 [DEBUG] [org.gradle.api.internal.project.ant.AntLoggingAdapter] [ant:javac] Compilation arguments:
'-d'
'C:\workspace\blabla'
'-classpath'
'tons_of_jars'
'-target'
'1.7'
'-g'
'-XDignore.symbol.file'
'-source'
'1.7'

しかしuseAnt、削除される予定で、汚いハックのようです。

Win8で最新のGradle(1.8)とjdk1.7.0_25を使用していますが、それが問題になるとは思えません

Gradle にソースを適切にコンパイルさせ、コンパイル パラメータを尊重させるにはどうすればよいですか?

4

1 に答える 1

2

私が知る限り、JDKコンパイラAPI(JavaCompileタスクが使用するもの)はフラグを黙って無視します-XDignore.symbol.file(他のオプションでもこれを見ました)。今のところ、私が認識している唯一の解決策は、Ant ベースのコンパイラにフォールバックすることです。

編集: 別のオプションは、コマンド ライン コンパイラJavaCompileを使用するようにタスクを強制することです。javac

compileJava {
    options.fork = true
    options.forkOptions.executable = "javac" // assumes that javac is on PATH
    options.compilerArgs << "-XDignore.symbol.file"
}
于 2013-10-01T20:08:30.573 に答える