java - 如何加载由maven生成的可执行jar文件中捆绑的资源?

标签 java maven

我正在尝试加载我捆绑在 jar 文件中的资源。 最初它们放置在 src/main/resources/*.wav 下。

为了生成 jar 文件,我使用了 maven-jar-plugin。 如果我解压 jar 文件,我可以看到资源文件。

在我的源代码中,我正在加载文件

AudioSystem.getAudioInputStream(MyClass.class.getResourceAsStream("/my-file.wav"));

当我通过 IntelliJ 运行应用程序时,这似乎有效。 但是,当我尝试执行生成的 jar 文件时,无法加载资源。

我是不是错过了什么?也许是类路径?

编辑 我的 pom.xml 具有以下构建属性:

  <build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <mainClass>MyMain</mainClass>
            </manifest>
          </archive>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <configuration>
          <mainClass>MyMain</mainClass>
        </configuration>
      </plugin>
    </plugins>
  </build>

最佳答案

我知道问题出在哪里了。 问题不在于 Maven。

这是源代码,应该改为:

URL url = this.getClass().getClassLoader().getResource("my-resource.wav");
AudioSystem.getAudioInputStream(url)

关于java - 如何加载由maven生成的可执行jar文件中捆绑的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56397819/

相关文章:

java - 如何登录 Undertow 嵌入式服务器中的文件?

java - Spring ClientHttpRequestInterceptor请求/响应为空

java - Spring-Hibernate-JPA-Spring-Data-Maven-JSF应用Tomcat启动错误

java - maven:无法识别的标签: 'testResources'

java - IntelliJ想法: How to (by default) exclude a module from compilation which is broken and which is not part of the maven build?

java - 如何在 IDEA 中仅重新导入一个 Maven 依赖项

Java 泛型 : Build Parameterized Classes for every inner class

java - 级联 if 语句出错

java - java中的下拉菜单?

java - IntelliJ Build > Rebuild Project 是否调用 Maven?