java - 在 jar 中加载资源文件

标签 java jar io loading

加载资源(声音、图像、xml 数据)的最佳方式是什么,并且也可以在分布式 jar 文件中使用?

我需要加载一些声音、图像和 xml 数据,以便在我的程序中使用。使用

AudioInputStream ais = AudioSystem.getAudioInputStream(new File("~/src/com/example/package/name/assets/TestSound.wav"));

在 jar 中不起作用,原因很明显,包括 src 不会在 jar 中。

编辑:

(正在运行)MWE:http://pastebin.com/CNq6zgPw

最佳答案

ClassLoader 类有两个相关方法:

  • getResource(path) 为类路径上的任何资源提供 URL,
  • getResourceAsStream(path) 提供资源的输入流。

您可以将这些方法与 AudioSystem.getAudioInputStream(...) 方法的重载一起使用,以获取读取 JAR 文件中资源的音频流。

<小时/>

请注意,如果您在 ClassLoader 对象上调用这些方法,则该路径将在类路径上的 JAR 文件的命名空间中解析……而不是在开发平台的文件系统命名空间中。

关于java - 在 jar 中加载资源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30282834/

相关文章:

java - 在 Spring 中使用 Java 驱动程序的无尽 MongoDB ReplicaSetStatus 更新程序异常

java - 我的表程序有问题。有人能告诉我如何解决吗?

java - 尽管拒绝权限仍加载小程序

java - Android - 条件访问 Jar

java - jar 中的 System.out.println

perl - Perl 的 Capture::Tiny::capture() 是否避免了使用 system() 时所需的磁盘 io?

java - 如何动态调用Junits

java - 您知道在Tomcat中开发prePost的好的教程网站吗?

haskell - 在 Haskell 中同时等待两个输入

java - 如何将对象序列化到java中的非阻塞套接字