2015-11-02 2 views
-1

Я должен указать, что этот код выполняется в IBM JDK 7. Следующая строка кода генерирует исключение FileNotFound.FileInputStream java.io.FileNotFoundException

properties.load(new FileInputStream("/myApp/properties/props.properties")); 

Такая же строка кода отлично работает на компьютерах моих коллег. По какой-то причине на их машинах есть неявный C:, который предполагается перед этим путем, что и должно произойти на моем компьютере. Мы объединили свои головы, но не нашли решения проблемы.

Когда я запускаю эту линию

properties.load(new FileInputStream("C:\\myApp\\properties\\props.properties")); 

Он отлично работает и не выдает ошибку. Как вы видите, я специально поставил C: в путь. Как я могу получить первую строку кода, чтобы предположить, что существует неявный C:?

+1

Вы говорите, что на компьютере ваших коллег Windows строка 'new FileInputStream («/myApp/properties/props.properties »)' фактически загружает файл 'C: \ myApp \ properties \ props.properties'? Это было бы странно. – Tunaki

+1

Вы должны использовать 'getResourceAsStream()' вместо абсолютных путей, подобных этому. – Kayaman

+0

Как вы начинаете свою программу? является текущим рабочим каталогом на диске C? – Henry

ответ

0

В Windows имя файла /myApp/properties/props.properties не является абсолютным, так как оно не указывает букву диска. ОС добавит диск текущего рабочего каталога, чтобы сделать его абсолютным именем.

Так что если программа запущена с текущей рабочей директорией на диске C, все в порядке, если она запущена с другого диска, файл не будет найден.