JRE6编译的软件与JR7无法正常工作

时间:2013-09-02 01:37:01

标签: java java-7 java-6

即使认为java是向后兼容的,我也无法使用JRE7运行我的Java 6应用程序。

第一个问题:

当我使用JRE7运行时,

javax.sound.sampled.Clip无法正常工作,但在使用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 Runtime版本:1.6.0_24

  • 声音效果很好

  • 图片加载非常精细

Java Runtime版本:1.7.0_21

  • 声音不起作用(实际上是随机播放)

  • 图片加载非常精细

Java Runtime版本:1.7.0-ea

  • 声音效果很好

  • 图片加载的红色通道不正确。

简单测试:

将此代码用于两个java版本:http://pastebin.com/WMCfh4Vp

结果:

  • JRE-6:作品
  • JRE-7:不播放,说剪辑没有运行也没有激活。

有办法扭转这个问题吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

我怀疑问题在于您处理字节的方式(例如编码,传输等)...不在压缩库或音频或图像库中。

更新 - 您的粘贴列表链接不包含您的FileOperations类。如果您处理字节的方式出现问题,很可能就在那里!)

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

无论哪种方式,如果你想要一个详细的答案,你需要提供更多的代码(理想情况下是一对SSCCE)。

答案 1 :(得分:0)

问题在于我正在检查它是否在投放后正在运行,会发生什么是在Java 7上你必须让线程进入休眠状态,然后检查它是否正在播放以便让它重复进入睡眠状态。