您好我正在开发一个Maven项目,该项目依赖于外部jar,其中ConfigLoader
类具有以下loader()
方法。
public class ConfigLoader {
public void initialize() {
loader();
}
private static void loader() {
URL configURL = ConfigLoader.getClass().getResource("runtimeConfiguration.xml");
//some other method calls to which configURL is an argument.
}
//other methods of ConfigLoader class
}
,目录结构是这样的 -
src
|...main
|.......java
|.......resources
|................dev
|................prod
dev和prod都有一个名为 runtimeConfiguration.xml 的文件 并且使用此类的代码是
public class Application {
private Application application;
public static void main(String []args){
application = new Application();
application.invokeConfigLoader();
//additional code
}
private void invokeConfigLoader() {
configLoader.initialize();
}
}
我得到的错误是
could not find: runtimeConfiguration.xml
and the exception is thrown at the getResource() line in the class from jar.
我尝试将dev文件夹添加到classpath但仍然是同样的错误。我想从linux终端运行这个代码,我从trunk目录中给出的命令(所有我的exernal jar和资源文件夹都位于maven构建之后)是 -
java -cp /resources/dev/*:configuration-loader.jar
我正在使用intelliJ 2017.2并且还尝试将资源/ dev文件夹添加为模块依赖项,但我继续得到相同的错误。资源文件夹通过项目结构设置添加为库。我试图搜索很多,但没有发现任何问题。请帮助我,因为我是这个基于环境的开发的新手。 谢谢!
答案 0 :(得分:0)
ConfigLoader.getClass().getResource("runtimeConfiguration.xml");
将尝试从定义ConfigLoader的同一个包中获取runtimeConfiguration.xml
,而不是从类路径的根中获取。尝试将/
附加到runtimeConfiguration.xml
。
这应该有效ConfigLoader.getClass().getResource("/runtimeConfiguration.xml");
或ConfigLoader.getClass().getResource("/dev/runtimeConfiguration.xml");
,具体取决于您如何向类路径添加资源。
有关详情,请参阅javadoc。