首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >给出一个相对路径,以便声音在任何机器上运行jar文件时工作正常。

给出一个相对路径,以便声音在任何机器上运行jar文件时工作正常。
EN

Stack Overflow用户
提问于 2013-04-06 20:48:16
回答 2查看 334关注 0票数 0

在快照中所示的utility包中,有一个类Constants。在与utility相同的目录中,有一个名为soundsfolder,快照中也显示了这个名称。到目前为止,我已经给出了.wav文件的完整路径。

Like W:/UnderTest/Blaah/Blaaaaah/Foo/sounds/file.wav

我应该如何给出路径,以便当我创建一个.jar文件,声音仍然工作。我试过这个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
../sounds/Player_1.wav

但这不起作用,我得到了java.io.FileNotFoundException: ..\sounds\Player_1.wav (The system cannot find the path specified)

EN

回答 2

Stack Overflow用户

发布于 2013-04-06 20:53:00

试试这个..。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
URL url = Constants.class.getResource("/sounds/file.wav");

当前获取文件路径的url .

票数 1
EN

Stack Overflow用户

发布于 2013-04-06 21:09:07

在这种情况下,最好加载相对于根类路径的资源:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
URL soundURL = Thread.currentThread().getContextClassLoader()
        .getResource("/sounds/file.wav");

您还可以将资源作为流获得:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
InputStream soundURLStream = Thread.currentThread().getContextClassLoader()
        .getResourceAsStream("/sounds/file.wav");

这与Class.getResource之间的主要区别是,Class.getResource假定所提供的路径相对于类层次结构中的及其位置。因此,给定相对路径“/ the /file.wav”,从类getResource调用utility.Constants,将尝试从包utility.sounds解析file.wav资源。而使用类加载器和相同的相对路径时,资源将从sounds中解析。微妙但重要的区别。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15858968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文