我有一个Maven项目,父母pom有两个孩子pom:
de-service . (root pom)
de-service-api (child pom)
de-service-web (child pom)
在根pom中,我有:
<modules>
<module>de-service-api</module>
<module>de-service-web</module>
</modules>
在de-service-web的资源/模型目录下,我有一个我需要加载的文件:
testModel.model
我将其相对路径指定为(modelName):
de-service-web/src/main/resources/model/testModel.model
然后我有代码加载这个文件:
try {
SerializedClassifier model = new SerializedClassifier();
model.setModelFile(new File(modelName));
return model;
} catch (Exception e) {
e.printStackTrace();
}
这适用于我的本地计算机,但一旦部署在我的远程服务器上,就会报告错误:
java.io.FileNotFoundException: /home/admin/de-service-web/src/main/resources/model/testModel.model
看起来,相对路径形成的完整路径名缺少根目录的级别,根目录是父pom.xml的根目录: 去服务。
相对路径是相对于&#34; de-service-web&#34;的根,而不是项目的真正根源&#39; de-service&#39;。如何在这个项目结构中指定相对路径?
答案 0 :(得分:0)
据我所知,如果您正在使用Maven项目,那么resources
文件夹中的所有内容都应该在类路径的类路径上提供。以下是加载文件的一种方法:
String fileName = "model/testModel.model";
try {
ClassLoader classLoader = YourClass.class.getClassLoader();
File file = new File(classLoader.getResource(fileName).getFile());
SerializedClassifier model = new SerializedClassifier();
model.setModelFile(file);
return model;
}
catch (Exception e) {
e.printStackTrace();
}
如果这不起作用,那么您应该检查WAR / JAR的类路径,以确保testModel.model
实际上可用。