我使用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;
}
我也遇到过类似的问题。
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时也有效。
不能将文件作为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()
我在项目中创建了一个资源文件。我想将资源文件中的值注入到Springbean中。我在applicationcontext中定义了资源文件的占位符。xml。 我可以向applicationContext中声明的bean注入值。类似xml: 这工作得很好。但是,如果我声明带有Spring注释的bean,我就不能注入值。 你知道为什么我不能访问使用注释声明的bean内的值吗? 这是我的例外
我正在做一个项目,编译并运行我的IDE工作正常。所有资源都找到了,它正常工作。然而,当我构建我的. jar时,它能够找到一些资源,但不是全部。我的项目结构看起来是这样的: 当我运行jar文件时,它能够找到图像并使用它们,但是当我尝试访问html文件时,它不会打开。下面是jar的项目结构; 我以前从未处理过jar文件,所以这似乎是我犯的一个非常明显的错误。感谢您的帮助,谢谢! 编辑:访问找不到的文件