Как указать относительный путь в таком проекте Maven? - PullRequest
0 голосов
/ 09 мая 2018

У меня есть проект Maven с родительским pom с двумя дочерними pom:

de-service . (root pom)
de-service-api (child pom)
de-service-web  (child 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: де-сервис.

Относительный путь относительно корня «de-service-web», а не реального корня проекта «de-service». Как указать относительный путь в этой структуре проекта?

1 Ответ

0 голосов
/ 09 мая 2018

Насколько я знаю, если вы используете проект Maven, то все, что находится в папке resources, должно быть доступно в classpath, в корне classpath. Вот один из способов загрузить ваш файл:

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 действительно доступен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...