私は最も奇妙な問題を抱えています。ファイルにデータを書き込む Java クラスがあります。日食で実行すると、すべて正常に動作します(正しいエンコーディングでデータを書き込みます)。しかし、スタンドアロンの JAR として実行すると、エンコーディングが壊れます。
私のプロジェクト(pom.xml)にこれがあります:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
私のJavaクラスには、Eclipseのプロパティがあります(右クリック->プロパティ)ファイルエンコーディングがUTF-8に設定されています。
これは、追加を行う Java コードの抜粋です。
//class field
static BufferedWriter wr;
public static void main(String[] args) throws IOException {
OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(args[0], true), "UTF-8");
wr = new BufferedWriter(writer);
//.processing logic, building up what needs to be in the file, line by line
wr.close();
}
.csv ファイルに追加する関連メソッド:
private void writeToCSVFile(String content){
try {
System.out.println(content);
wr.write(content);
wr.write("\n");
wr.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
繰り返しますが、Eclipseで印刷すると、追加しているファイルと同じように出力がうまく見えます。しかし、スタンドアロンの jar エンコーディングとして実行すると、何らかの理由で壊れます。これは、関連するプラグインを構成する方法です:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>install</id>
<phase>install</phase>
<goals>
<goal>sources</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.3</version>
<configuration>
<finalName>Worker</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.test.automation.Testing</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
私は本当に次に何をすべきか分かりません。何か案は?
このコードには例外がなく、どこにも失敗しません。結果が書き込まれているファイルを確認すると、Eclipseで意図したとおりに実行されます。
スタンドアロンのjarとしても機能しますが、結果が書き込まれたファイルのエンコードが台無しになっていることを確認した場合のみです。