2017-06-11 1 views
1

Ich habe hier einige Codierungsprobleme.Übergabe eines Codierungsschalters an die JVM für eine Gradle-Task "JavaExec"

Dies ist auf einem W10 OS, aber ich benutze sowohl die DOS-Konsole und die Cygwin-Shell, um Aufgaben direkt auszuführen. In Eclipse verwende ich das Buildship-Plugin und für meine "Produktions" -Ausgabe mache ich ein "fettes" Glas (d. H. Enthält alle Abhängigkeitsgläser).

Um das Fett Glas zu bekommen in einer DOS-Konsole ich so gehen zu laufen:

> chcp 65001 
> java -jar -Dfile.encoding=UTF-8 myFatJar.jar 

das Fett jar Um in einer Cygwin-Konsole ausführen ich die „chcp“ Befehl auslassen

. .. und beide laufen gut, keine Codierungsprobleme.

Ich habe eine run Aufgabe, die wie folgt aussieht:

task myRun(type: JavaExec, dependsOn: assemble) { 
    standardInput = System.in 
    classpath sourceSets.main.runtimeClasspath 
    main = "core.ConsoleHandler" 
} 

Wenn ich laufen diese in Eclipse (Buildship Plugin) gibt es keine Codierung probs.

Wenn im gradle dir, ich gehe wie folgt aus:

> gradle myRun 

ich Codierung Probleme, ob ich eine DOS oder Cygwin-Konsole: Probleme mit Unicode-Zeichen zu System.out gehen.

In meinem gradle.build (ich bin mit der application Plugin) habe ich versucht, dies:

applicationDefaultJvmArgs = ["-Dfile.encoding=UTF-8"] 

... aber dies scheint keine Wirkung zu haben.

Übrigens, während des Testens habe ich etwas Ausgabe gehen zu System.out ... und dies kommt gut aus, wenn ich die JUnit/Mockito Testergebnisse untersuchen.

In meiner Suche „alle meine Enten in einer Reihe“ Ich habe versucht, mit dem Java-Code durcheinander auch selber zu erhalten: statt mit System.out direkt habe ich versucht, dies:

PrintStream out = new PrintStream(System.out, true, "UTF-8"); 
    out.print(message); 

... aber diese dann dazu gebracht, Kodierung Probleme mit der Ausgabe an System.out beim Ausführen von Tests!

Der gradle Befehl applicationDefaultJvmArgs macht mich zu fragen, ob es eine Möglichkeit der Weitergabe „Nicht-Standard“ schaltet auf die JVM ist, wenn eine JavaExec -Typ Aufgabe ... runing

jemals so etwas später

Hah .. so ist die Art und Weise, mit diesen Dingen:

ich habe die folgende Zeile in meiner myRun Aufgabe:

jvmArgs "-Dfile.encoding=UTF-8" 

... und das Codeproblem mit den DOS- und Cygwin-Konsolen läuft war ... gelöst! Jedoch, wenn ich die myRun Aufgabe in Eclipse Buildship laufen lasse, bekomme ich jetzt Kodierungsprobleme!:

Rà © fà © rà © juge des ~ s: "Judge in Chambers sitzt mit dringenden Angelegenheiten zu befassen"
à © tat juge de mise en ~: joinder Ausgabe Richter

'é' sollte 'é' sein (und war vor dem Hinzufügen dieses jvmArgs Argument)

Insgesamt ist dies natürlich eine Verbesserung ... aber es wäre schön, von einem Experten zu wissen, was hier vor sich geht ...

Antwort

0

Manchmal Dinge tun Sinn machen ... obwohl ich noch Kodierung eine erschreckende, einschüchternde und Seele zerstörenden Thema finden.

Meine Eclipse "Run-Konfiguration" für myRun fehlte dieses JVM-Argument. Das Hinzufügen war einfach: Run -> Run configurations -> wähle "myRun" -> Argumente -> JVM-Argumente.

Alle meine Enten scheinen in einer UTF-8-Reihe zu sein. Hurra.

Verwandte Themen