即使认为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
结果:
有办法扭转这个问题吗?
谢谢。
答案 0 :(得分:0)
我怀疑问题在于您处理字节的方式(例如编码,传输等)...不在压缩库或音频或图像库中。
(更新 - 您的粘贴列表链接不包含您的FileOperations类。如果您处理字节的方式出现问题,很可能就在那里!)
如果正确处理字节,那么另一种可能性是播放失败的系统(或JRE)没有必要的音频编解码器。
无论哪种方式,如果你想要一个详细的答案,你需要提供更多的代码(理想情况下是一对SSCCE)。
答案 1 :(得分:0)
问题在于我正在检查它是否在投放后正在运行,会发生什么是在Java 7上你必须让线程进入休眠状态,然后检查它是否正在播放以便让它重复进入睡眠状态。