ソフトウェアの奇妙なバグを解決することに気付きました。問題は、アプリケーションを実行可能な JAR にパッケージ化した場合にのみ発生することです。
問題はこの単純なコードにありました:ループカウンターを追加して、サイクルが何回行われたかをカウントします
private static byte[] read(InputStream source) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
int loopCounter = 0;
int bytesRead;
try {
byte[] buffer = new byte[4096];
while ((bytesRead = source.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
loopCounter++;
}
} catch (IOException e) {
e.printStackTrace();
}
return out.toByteArray();
}
例:
source = ClassLoader.class.getResourceAsStream("file.lol");
loopCounter in Eclipse = 1366
loopCounter in JAR = 1405
私の質問は、同じ InputStream でこの大きな違いがあるのはなぜですか?
編集:コードを正しいものに変更しますが、loopCounters はまだ異なります。