即使认为 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:不播放,说剪辑没有运行或处于活动状态。
有办法扭转这个问题吗?
谢谢你。