Java项目在命令行(导出的jar)中正常运行,但不使用Eclipse

时间:2014-10-28 14:26:52

标签: java eclipse jar

我正在 Solaris 上创建旧的 awt / swing 项目(不属于我的属性)。源代码和 jar 文件已经给了我。当我在 eclipse上运行它时会出现问题:我收到与字符串解析相关的错误(将字符串十六进制解析为整数)。但是,当我从jar运行它时,没有错误发生。实际上,当我将项目导出为新的可运行Jar文件时,它可以正常运行。

我已经尝试过搞乱项目中使用的java版本。我已经将eclipse配置为仅适用于1.6.0_31-b04版本。打印系统属性表明,eclipse和控制台上的java运行时版本是相同的。

eclipse上的错误消息:

java.lang.NumberFormatException: For input string: "7003fffd03"
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.valueOf(Unknown Source)
    at java.lang.Integer.decode(Unknown Source)
    ...

我指出:当我在控制台上运行导出的Jar时,没有错误生成并且一切正常。

我没有要求提供这么少信息的解决方案。我很感激你能给我的任何假设。

1 个答案:

答案 0 :(得分:0)

从二进制文件中读取结果是鲁莽的。 在不同的环境中,将二进制数据转换为字符串可能会返回不同的结果。 解决方法是在读取数据时使用特定的 charset

String strFileContents = "";
byte[] contents = new byte[1024];
int bytesRead = 0;

while (dataInputStream.available() != 0) {
    while ((bytesRead = bufferedInputStream.read(contents)) != -1) {
        strFileContents = new String(contents, 0, bytesRead, "ISO-8859-1");
    }
}

现在在eclipse中运行项目并从任何系统上的jar文件运行都会产生相同的结果。