当前位置: 首页 > 知识库问答 >
问题:

Spring引导打包后找不到资源文件

锺高翰
2023-03-14

我使用SpringBootMaven插件将应用程序打包为jar文件。

它可以在Itellij IDE中找到直接运行的资源文件,但之后找不到资源文件,显示错误为:

JAVA木卫一。FileNotFoundException:类路径资源[jmxremote.password]无法解析为绝对文件路径,因为它不位于文件系统:jar:file:/home/XXX/target/yyyy中。罐子/BOOT-INF/classes/jmxremote。暗语

但是,jar文件中确实存在文件“jmxremote.password”。

    private Properties initialJMXServerProperties() throws RuntimeException {
    URL passwordURL = JMXConfig.class.getClassLoader().getResource(passwordFileName);
    URL accessURL   = JMXConfig.class.getClassLoader().getResource(accessFileName);

    String passFile     = Optional.ofNullable(passwordURL).map(URL::getPath).orElseThrow(() -> new RuntimeException("JMX password file not exist"));
    String accessFile   = Optional.ofNullable(accessURL).map(URL::getPath).orElseThrow(() -> new RuntimeException("JMX access file not exist"));

    Properties properties = new Properties();
    properties.setProperty(PASSWORD_FILE_PROP, passFile);
    properties.setProperty(ACCESS_FILE_PROP, accessFile);
    return properties;
}

共有2个答案

曹昊焱
2023-03-14

我也遇到过类似的问题。

class SomeClass{
  @Autowired
  ResourceLoader resourceLoader;

  void someFunction(){
    Resource resource=resourceLoader.getResource("classpath:preferences.json");
    Preferences defaultPreferences = objectMapper.readValue(resource.getInputStream(), Preferences.class);
 }
}

在本例中,我将JSON数据映射到Preferences类。在您的情况下,您可以使用

resource.getURL()

供进一步使用。这对开发环境和部署都有效,这意味着在tomcat中构建和部署JAR/WAR或使用java-jar时也有效。

周伟泽
2023-03-14

不能将文件作为URL从JAR加载。您必须将其作为InputStream加载。

就你而言:

InputStream passwordInputStream = 
                 JMXConfig.class.getClassLoader().getResourceAsStream(passwordFileName);

阅读更多信息:从jar中读取资源文件

 类似资料:
  • 请教Webpack打包后找不到资源? 入口文件如下: 打包在lib目录,如下: 入口文件index_bundle.js在package.json中设置main指向./lib/index_bundle.js就好了 但是874.index_bundle.js这个文件就找不到了,提示如下 于是我去查了下,说是要设置homepage 但是无论我是设置./lib/还是设置.,都不对 于是我想是不是要将hom

  • 我的 Apache FOP 应用程序有问题。 一切正常,直到我开始将外部文件(xsl、ttf、…)从外部工作目录打包到应用程序的jar文件中。从那以后,不再加载图像,我收到以下错误: 在 xsl 文件中,图像嵌入了: 当我将文件打包到jar中时,为什么图像不再工作?图像作为base64字符串嵌入到xsl文件中,因此图像数据必须可用... 谢谢:) 编辑1我正在用以下内容设置FopFactory基本

  • 这个问题非常相似(如果不是相同的话): “找不到基本名称消息的捆绑包”错误 为MessageSource找不到ResourceBundle[消息]:无法为基名消息找到bundle 基本上,我有以下代码: 当我试着跑的时候 我试图更改文件名,在代码中更改文件名,添加资源文件夹(但我认为它已经被正确地包括在内),并放置消息。属性文件位于所有可能的文件夹中。奇怪的是,eclipse本身显示了这个错误,它

  • 方法:获取 现状:404 注意:URL应该是http://localhost:8080/dragonline/resources/img/icon.png()

  • 我正在做一个项目,编译并运行我的IDE工作正常。所有资源都找到了,它正常工作。然而,当我构建我的. jar时,它能够找到一些资源,但不是全部。我的项目结构看起来是这样的: 当我运行jar文件时,它能够找到图像并使用它们,但是当我尝试访问html文件时,它不会打开。下面是jar的项目结构; 我以前从未处理过jar文件,所以这似乎是我犯的一个非常明显的错误。感谢您的帮助,谢谢! 编辑:访问找不到的文件

  • 我正在使用ADT 我的styles.xml: