2016-11-21 1 views
2

У меня есть приложение Java Spring (maven) с классом TranslationService, которое возвращает переведенную строку из файла JSON (backend.json). Когда я создаю свой проект (mvn clean package), я получаю свой файл {project} - {version} .jar. Если я исполню этот файл (java -jar target/*.jar), все работает отлично, Я могу видеть свою страницу, и все работает.Java не может найти мой файл перевода, если я использую Apache2 (вместо Tomcat)

Но у меня есть одна проблема сейчас. В производственной версии моего проекта я использую Apache2 с VirtualHost. Мой тест конфигурация выглядит следующим образом:

<VirtualHost *:80> 
     ServerName myloc 
     ProxyPass/http://localhost:8080/ 
</VirtualHost> 

Я все еще могу видеть мою страницу и заполнить свои формы и т.д .. Но если я после того, как мои окончательные представить, мое приложение посылает мне по электронной почте и создает PDF для меня. Но мое приложение сбой, потому что оно не может перевести мои вещи, потому что он говорит, что он не может найти мой файл. Но в моей версии по умолчанию (tomcat) она работала нормально.

static String getTranslation(String lang, String jsonKey) { 
    try { 
     File file = new File("./src/main/resources/static/i18n/"+lang+"/backend.json"); 
     JsonReader reader = Json.createReader(FileUtils.openInputStream(file)); 
     // ... 

ошибка:

"message":"java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.io.FileNotFoundException: File './src/main/webapp/i18n/de/backend.json' does not exist" 
+0

Путь относится к рабочему каталогу, просто напечатайте абсолютный путь с помощью System.out.println (file.getCanonicalPath()), чтобы узнать, почему ваш результирующий путь неверен –

ответ

1

Прямо сейчас вы проверяете путь относительно рабочего каталога программ!

Но ваш файл находится в папке ресурсов и упакован в банку, так что вы не найдете «./src ....»

Вы должны получить доступ к ресурсам по-другому. (пример: click me))

1

Поскольку ваш путь относительно рабочего каталога, вы должны сначала чек, если вы разместили файл в нужном месте.

Чтобы войти в рабочий каталог вы можете получить его, как это:

System.out.println("Current dir:"+new java.io.File(".").getCanonicalPath()); 

Или вы можете использовать абсолютный путь к файлу (который я бы и не рекомендовать).

Смежные вопросы