我遇到了最奇怪的问题。我有一个将一些数据写入文件的 java 类。当我在 Eclipse 中执行它时,一切正常(以正确的编码写入数据)。但是当我将它作为独立的 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 使用,但只有当我检查写入结果的文件时,编码才会被搞砸。