概述使用nsis打包应用程序安装程序和.wav文件无法播放,因为Windows上包含空格的path – > Program%20Files
我遇到了涉及audioinputStream,资源文件夹和nsis的windows安装问题。 我正在开发一个应用程序(在linux中),在发生事件时执行桌面通知,除了在popup通知时应该播放的.wav文件外,其他所有应用程序都可以正常工作。 我已经testing了64位windows机器上的应用程序,而无需通过nsis安装它,它完美的工作。 我收到一条错误消息,指出:
错误:java.io.fileNotFoundException:C: Program files Microsoft Microsoft 20files Alcatel-Lucent E911DesktopNotifIEr classes audio siren.wav(Le chemin d\’accèsspécifiéest introuvable)
我在Netbeans工作,并使用maven来build立。 以下是我如何加载path的代码片段:
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
在所有平台上的Java
在linux上用java运行shell脚本
从PC传输audio到智能手机?
如何更改windows中的文件ACL,如果我只知道SID?
符号来表示项目的根源
但它没有与我正在与audioinputStream工作。
我知道这是“Program files”中的空间问题,在这里我必须设置安装,因为当我将setup.nsi脚本中的InstallDir值从$ PROGRAMfileS64更改为$ WINDIR时,它完美运行。
有没有人有任何build议,我可以修改我的代码正常工作,因为Program files中的空间导致编码问题?
启动一个改变颜色的cmd窗口并从batch file中执行一个jar文件
linux上的ARM体系结构的任何Web和Java IDE?
getClass()。getResource(resourcePath)在windows上有效,在linux上为null
从Java读取windows ACL
java线程和系统线程之间有什么关系?
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的介绍部分末尾的简介。
总结
以上是内存溢出为你收集整理的使用nsis打包应用程序安装程序和.wav文件无法播放,因为Windows上包含空格的path – > Program%20Files全部内容,希望文章能够帮你解决使用nsis打包应用程序安装程序和.wav文件无法播放,因为Windows上包含空格的path – > Program%20Files所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容