2014-02-18 4 views
0

Мне удалось реализовать простой файл ввода-вывода в моем проекте Spring для файлов, не входящих в мой проект (затем файл WAR), используя файл .properties, содержащий путь (source), и теперь мне нужно сделать это на сервере.Пути файлов ввода Tomcat (для процесса ввода-вывода Java)

Раньше, когда я включил файлы внутри файла WAR, я могу получить доступ к ним на сервере Tomcat, используя путь

/home/my_username/tomcat7/webapps/my_project/WEB-INF/classes/ 

Но теперь, что файлы не внутри файла WAR, я просто положил их рядом с папкой webapps.

Структура моей папки Tomcat 7 является:

tomcat7 
|----> bin 
|----> conf 
|----> logs 
|----> resources* 
|----> temp 
|----> webapps 
|----\----> springapp.war* 
|----> work 

где /resources папка мне нужно внутри WAR файла ввода/вывода.

Мой .properties файл имеет:

dir.server=home/my_username/tomcat7/resources 
// or 
dir.server=/home/my_username/tomcat7/resources 

но появляется сообщение об ошибке (из моего catalina.out файла):

java.io.FileNotFoundException: /home/my_username/tomcat7/resources/my_file.file (No such file or directory) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(FileInputStream.java:120) 
    at java.io.FileInputStream.<init>(FileInputStream.java:79) 
    at weka.core.SerializationHelper.read(SerializationHelper.java:270) 

Есть правильный способ объявить путь к файлу или нужно изменить моя реализация ввода/вывода файлов?

+0

Определенно начинается с косой черты. Также необходимо установить правильные рекурсивные права 'chown owner: group' и' chmod a + rw'. В FileNotFoundException вы можете попытаться отключить путь до корня, чтобы найти правильный нарушительный каталог '/ home/my_username' или так. –

+0

Если я правильно понимаю, мне нужно сделать разрешения '/ resources' на' 755' (и рекурсивно)? –

+1

Да, если это проблема; права чтения должны быть достаточными, если вы только читаете 'chmod a + r'. –

ответ

2

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

String tomcatPath = System.getProperty("catalina.base") 

Это вернет вам путь к папке tomcat в этой конкретной системе. Следовательно, если система, на которой вы развернули war, имеет другой путь для tomcat, который будет возвращен. Затем вы можете получить доступ к файлу свойств в папке ресурсов, добавив строку в этот путь.

String tomcatPath = System.getProperty("catalina.base"); 
String propertiesFilePath = tomcatPath + "/resources"; 

Для доступа конкретного файла можно использовать код:

String filePath = propertiesFilePath+"my_file.file"; 

Вы должны взглянуть на:

How to get Tomcat installation directory using Java.

Надеется, что это помогает .. :)

+0

Он все еще не работает :(вывод 'System.getProperty (" catalina.base ")' фактически совпадает с тем, который я сейчас использую в вопросе. –

+0

Должен ли я переместить папку 'resources' в другое место? –

+0

Вы пытались запустить 'getProperty' на сервере.? Каков результат на этой машине ..? – user2339071

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