我遇到了一个涉及用于 Windows 安装的音频输入流、资源文件夹和 nsis 的问题。我正在开发一个应用程序(在 Linux 中),该应用程序在事件发生时执行桌面通知,并且除了在通知弹出时应该播放的 .wav 文件之外,一切正常。我已经在 64 位 Windows 机器上测试了该应用程序,而没有通过 nsis 安装它,它运行良好。我收到一条错误消息,指出:
2013 年 7 月 8 日 12:17:26 错误 [Thread-2] (DesktopNotifierMessageAlertHandler.java:73) com.alcatel.proserv.e911.desktopNotifierMessaging.desktopNotifierMessageHandler.DesktopNotifierMessageAlertHandler - 错误:java.io.FileNotFoundException:C:\Program% 20Files\Alcatel-Lucent\E911DesktopNotifier\classes\audio\siren.wav(Le chemin d'accès spécifié est introuvable)
我在 Netbeans 工作并使用 maven 进行构建。这是我如何加载路径的代码片段:
String filename = this.getClass().getResource("/audio/siren.wav").getPath();
AudioInputStream audioInputStream = null;
try{
audioInputStream = AudioSystem.getAudioInputStream(new File(filename).getAbsoluteFile());
Clip clip = null;
clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.start();
}
...
我发现这个博客详细介绍了如何解决一个非常相似的问题: http ://braintwitter.blogspot.ro/2013/03/url-encoding-issue-with-tomcat.html
但它没有与我正在使用的 audioInputStream 一起工作。
我知道“程序文件”中的空间有问题,我必须在此处设置安装,因为当我将 setup.nsi 脚本中的 InstallDir 值从 $PROGRAMFILES64 更改为 $WINDIR 时,它运行良好。
由于 Program Files 中的空间导致编码问题,是否有人对如何修改我的代码以使其正常工作有任何建议?