Javaプロジェクトはコマンドライン(エクスポートされたjar)で正しく実行されますが、Eclipseは使用されません

Zaimatsu

Solarisで古いawt / swingプロジェクト(私の所有物ではない)に取り組んでいます。ソースコードとjarファイルが提供されています。Eclipseで実行すると、問題が発生します。文字列の解析(文字列の16進数を整数に解析する)に関連するエラーが発生します。ただし、jarから実行すると、エラーは発生しません。実際、プロジェクトを新しい実行可能なJarファイルとしてエクスポートすると、正しく実行されます。

私はすでにプロジェクトで使用されているJavaバージョンをいじってみました。1.6.0_31-b04バージョンでのみ動作するようにEclipseを構成しました。システムプロパティを印刷すると、JavaランタイムバージョンがEclipseとコンソールで同じであることがわかります。

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をコンソールで実行すると、エラーは生成されず、すべてが正常に機能することです。

私はそのような小さな情報で解決策を求めません。私はあなたが私に提供することができるどんな仮説でもありがたいです。

Zaimatsu

バイナリファイルからの読み取りは無謀であることが判明しました。さまざまな環境で、バイナリデータを文字列に変換すると、さまざまな結果が返される可能性があります。回避策は、データの読み取り中に特定の文字セットを使用することでした

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ファイルからプロジェクトを実行すると同じ結果が得られます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ