2017-06-11 12 views
1

ここではいくつかのエンコーディングの問題があります。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テスト結果を調べるとうまくいきます。

は、私はまた、Javaコードそのものをいじってみました「行にすべての私のアヒル」を得るために私の探求で

PrintStream out = new PrintStream(System.out, true, "UTF-8"); 
    out.print(message); 
...しかし、これは、その後原因:代わりに使用して System.out直接私はこれを試してみましたテストの実行時に出力を System.outにエンコードする際の問題をエンコードします!

GradleのコマンドapplicationDefaultJvmArgsJavaExec型のタスクをruningてたときにJVMに「非デフォルトの」スイッチを渡す方法があるなら、私は思ってしまう...

ほんの少し後で

ほら...などが、これらのものとの方法です:

私は私のmyRunタスクに次の行を追加しました

jvmArgs "-Dfile.encoding=UTF-8" 

... DOSとCygwinのコンソール実行でのエンコーディングの問題は解決されました!しかし、Eclipse BuildshipでmyRunタスクを実行すると、エンコードの問題が発生します。:

RA©FA©RA©JUGEデ〜S: "緊急 問題に対処するためのチェンバースに座っ判事"
éTAT JUGE・デ・三瀬アン〜:問題の裁判官の併合

'Ã' 'は'é 'にする必要があります(これは、jvmArgs引数を追加する前です)

もちろん、これは改善です...しかし、ここで何が起こっているのかを専門家から知ることはうれしいでしょう...

答えて

0

時にはものdo私はまだ悲惨な、威圧的で魂を破壊する対象をエンコードしていますが...。

MyRunのMy Eclipse "run configuration"には、このJVM引数がありませんでした。実行 - >実行コンフィギュレーション - > "myRun" - > "Arguments"タブ - > "JVM Arguments"を選択するだけで簡単に追加できました。

すべての私の鴨は、UTF-8の行にあるようです。ハレイ。

関連する問題