0

Java には下位互換性があると思っていても、JRE7 を使用して Java 6 アプリケーションを実行すると問題が発生します。

最初の問題:

javax.sound.sampled.Clip は、JRE7 を使用して実行するとまったく機能しませんが、JRE6 を使用して実行すると完全に機能します。

        AudioInputStream inputStream = null;
        //Try statement
        inputStream = AudioSystem.getAudioInputStream(new ByteArrayInputStream(buffer));
        clip = AudioSystem.getClip();
        clip.open(inputStream);

        if (delay > 0) {
            Thread.sleep(delay);
        }
        clip.start();
        //catch statement

JR7 では、clip.start(); の後。clip.isRunning() は false を返します。JRE6で実行している場合は発生しません

2番目の問題:

java.util.zip.Inflater を使用して画像ピクセルを圧縮しますが、JRE7 を使用してピクセルを読み取ると、何らかの理由で赤のチャネルが正しく表示されず、理解できませんでした。

おそらく、インフレータが jre6 と jre7 で異なる zip ライブラリ (jre\bin\zip.dll) を使用しているためです。

以下を使用して確認: System.getProperty("java.version"):

Java ランタイム バージョン: 1.6.0_24

  • サウンドは完璧に機能します

  • 画像は完全に正常に読み込まれます

Java ランタイム バージョン: 1.7.0_21

  • 音が鳴らない(実際はランダムに鳴る)

  • 画像は完全に正常に読み込まれます

Java ランタイム バージョン: 1.7.0-ea

  • サウンドは完璧に機能します

  • 画像が誤った赤チャンネルで読み込まれます。

簡単なテスト:

両方の Java バージョンでこのコードを使用: http://pastebin.com/WMCfh4Vp

結果:

  • JRE-6: 動作します
  • JRE-7: 再生されません。クリップが実行されておらず、アクティブでもありません。

この問題を回避する方法はありますか?

ありがとうございました。

4

2 に答える 2