我遇到了一个问题,涉及到一个audioInputStream、一个资源文件夹和一个用于Windows安装的nsis。我正在开发一个应用程序(在Linux中),它在事件发生时执行桌面通知,除了当通知弹出时应该播放的.wav文件之外。我在64位Windows机器上测试了这个应用程序,没有通过nsis安装它,它运行得很好。我收到一条错误消息,指出:
07/08/13 12:17:26错误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一起工作。
我知道“$PROGRAMFILES64”中的空间存在问题,这是我必须设置安装的地方,因为当我将setup.nsi脚本中的setup.nsi值从$PROGRAMFILES64更改为$WINDIR时,它工作得很好。
由于程序文件中的空间导致编码问题,有人对我如何修改代码以正确工作有任何建议吗?
发布于 2013-08-08 23:19:14
getResource()返回一个URL,并在这里应用了URL编码。你有两个选择。您可以转换为URI
String filename = this.getClass().getResource("/audio/siren.wav").toURI().getPath();或者,您可以使用URLDecoder在将路径传递到AudioInputStream之前对路径进行解码。
String filename = this.getClass().getResource("/audio/siren.wav").getPath();
filename = URLDecoder.decode(filename, "utf-8");请参阅java.net.URL简介部分末尾的空白页。
发布于 2022-01-29 07:21:53
所以我知道这是一个很老的线索,但是任何读过这篇文章的人,都要三思而后行,因为nsis软件包创建了这个恶意软件,就像在一台电脑上扫描病毒一样,电脑上运行着malware、avira、Rogue杀手、hitman pro和stinger。
Antiy-AVL - Trojan/Generic.ASMalwS.3506C16, Avast-Win64:Malware-gen, AVG - Win64:Malware-gen, Cyren - W64/Tedy.B.gen!Eldorado, Jiangmin -Trojan.PSW.Python.fv, Zillya -Trojan.Disco.Script.653https://stackoverflow.com/questions/18137682
复制相似问题