ここではいくつかのエンコーディングの問題があります。Gradle "JavaExec"タスク用のエンコーディングスイッチをJVMに渡す
これはW10 OS上ですが、私はDOSコンソールとCygwinシェルの両方を使って直接タスクを実行しています。 EclipseでBuildshipプラグインを使用していて、私の「プロダクション」出力では、「fat」ジャー(つまりすべての依存関係ジャーを含む)を作っています。私はこのように行くDOSコンソールで実行するように脂肪のjarファイルを取得するには
:
> chcp 65001
> java -jar -Dfile.encoding=UTF-8 myFatJar.jar
Cygwinのコンソールで実行するために脂肪のjarファイルを取得するには、私は「CHCP」コマンド
を省略します。 ..そしてこれらの両方が正常に動作し、コード化の問題はありません。
私はこのようになりますrun
タスクがあります。
task myRun(type: JavaExec, dependsOn: assemble) {
standardInput = System.in
classpath sourceSets.main.runtimeClasspath
main = "core.ConsoleHandler"
}
私は、Eclipse(Buildshipプラグイン)でこれを実行すると何のエンコーディングちゃったごめんなさいはありませんが。
Gradleのディレクトリに、私はこのように行く、:
> gradle myRun
私はDOSやCygwinのコンソールを使用しているかどうかをエンコードする問題を取得:System.out
に行くのUnicode文字の問題を。私gradle.buildで
(私はapplication
プラグインを使用しています)私はこれを試してみました:
applicationDefaultJvmArgs = ["-Dfile.encoding=UTF-8"]
...しかし、これは何の影響も与えていないようです。
ちなみに、テスト中、私はSystem.out
に出力されています...これはJUnit/Mockitoテスト結果を調べるとうまくいきます。
:
PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.print(message);
...しかし、これは、その後原因:代わりに使用して
System.out
直接私はこれを試してみましたテストの実行時に出力を
System.out
にエンコードする際の問題をエンコードします!
GradleのコマンドapplicationDefaultJvmArgs
がJavaExec
型のタスクをruningてたときにJVMに「非デフォルトの」スイッチを渡す方法があるなら、私は思ってしまう...
ほら...などが、これらのものとの方法です:
:私は私のmyRun
タスクに次の行を追加しました
jvmArgs "-Dfile.encoding=UTF-8"
... DOSとCygwinのコンソール実行でのエンコーディングの問題は解決されました!しかし、Eclipse BuildshipでmyRun
タスクを実行すると、エンコードの問題が発生します。:
RA©FA©RA©JUGEデ〜S: "緊急 問題に対処するためのチェンバースに座っ判事"
éTAT JUGE・デ・三瀬アン〜:問題の裁判官の併合
'Ã' 'は'é 'にする必要があります(これは、jvmArgs
引数を追加する前です)
もちろん、これは改善です...しかし、ここで何が起こっているのかを専門家から知ることはうれしいでしょう...