Как мне получить реальный путь в виде строки в Grails - PullRequest
1 голос
/ 03 ноября 2019

Разработан проект с использованием grails-3.3.1 и создан файл WARNable Runnable. Когда я запускаю команду:

java -jar build/libs/myproject-0.1.war

Возвращается null для следующей строки:

serveltContext.getRealPath("/someSource");

Но она работает нормально при развертывании в контейнере Tomcat.

Затем попробовал следующий способ:

servletContext.getResource("someSource").getPath();

Он возвращается, но не тот, который ожидается, а не тот, который getRealPath() возвращает. Он возвращается так:

D:/myprojects/myproject/build/libs/myproject-01.war*/

, который мне не нужен. Нашел ответы, предлагающие использовать getResourceAsStream(), но ресурс мне не нужен, я хочу только String.

1 Ответ

0 голосов
/ 15 ноября 2019

Мне не удалось найти решение, которое работало бы как локально, так и при развертывании в контейнере. Вместо этого я использовал этот обходной путь, чтобы получить путь в зависимости от среды, в которой выполняется код:

def path
if (Environment.current == Environment.DEVELOPMENT) {
    path = java.nio.file.FileSystems.default.getPath("someSource").toAbsolutePath().toString()
} else {
    path = ServletContextHolder.servletContext.getRealPath("/someSource")
}
...