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 上运行时不会发生这种情况

第二个问题:

我使用 java.util.zip.Inflater 压缩我的图像像素,但是使用 JRE7,当读取像素时,由于某种我无法弄清楚的原因,红色通道出错了。

可能是因为 Inflater 使用了 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

0

问题是我正在检查它是否在播放后立即运行,发生的情况是在 Java 7 上,您必须先让线程进入睡眠状态,然后再检查它是否正在播放,以便让它反复睡眠。

于 2013-09-14T23:03:11.257 回答
0

我怀疑问题出在您处理字节的方式上(例如编码、传输等)……而不是在压缩库或音频或图像库中。

更新- 你的 pastebin 链接不包括你的 FileOperations 类。如果你处理字节的方式有问题,它很可能在那里!)

如果字节处理正确,则另一种可能性是播放失败的系统(或 JRE)没有必要的音频编解码器。

无论哪种方式,如果您想要详细的答案,您都需要提供更多代码(最好是一对 SSCCE)。

于 2013-09-02T03:31:42.297 回答