2015-10-22 6 views
0

Я разрабатываю приложение, где я должен указать путь к файлу dao.properties, он работает отлично, но когда я выполняю jar с помощью cmd: java -jar StockManagement. jar я получаю ошибку, что файл не найден (он отлично работает в netbeans) класс и файл находятся в одной папке. я пробовал много относительных путей и ничего не работает, так что это моя последняя надежда здесь код и иерархия:Относительный путь не работает при выполнении jar

Hierarchy

Code

благодарственное у заранее

+0

http://stackoverflow.com/a/7098501/1352766 Это должно предоставить вам некоторую информацию о вашей проблеме. – morganw09dev

+0

Не могли бы вы также опубликовать фрагмент кода, который вы используете, чтобы попытаться загрузить файл? – morganw09dev

+0

Могу ли я сделать это в комментариях? – Sara

ответ

0

Если я не ошибаюсь, то, как вы используете ClassLoader, он ищет путь к файлу относительно того, где он вызывается.

Из фотографии видно, что вы используете ClassLoader из класса DAOFactory, верно? Вы объявляя путь к файлу, чтобы быть

stock/DAO/dao.properties 

Если вы вызываете его из DAOFactory, Java ищет файл в

<where DAOFactory is>/stock/DAO/dao.properties 

Если DAOFactory и dao.properties находятся в том же файл я думаю, что ваш путь к файлу должен быть просто

dao.properties 

Так это выглядит в той же папке, что DAOFactory находится.

EDIT: используйте класс DAOFactory для чтения в файле свойств.

Используя что-то вроде следующего фрагмента кода, вызовите эту функцию из класса DAOFactory, используя только основной метод, чтобы попытаться узнать, можете ли вы прочитать файл свойств без каких-либо других. Измените любые классы или имена, необходимые для работы на вашем локальном компьютере.

public static String getProperty(String property) { 
    String value = ""; 

    try (InputStream is = DAOFactory.class.getResourceAsStream("dao.properties")) { 
    Properties prop = new Properties(); 

    prop.load(is); 
    value = prop.getProperty(property); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } 

    return value; 
} 
+0

Привет, morgan спасибо за ваш ответ они находятся в одной папке и Я пробовал это до публикации здесь, он не работал – Sara

+0

В какой-то момент я увидел, что вы использовали Thread, чтобы попытаться прочитать в вашем файле свойств. Что делать, если вы используете класс DAOFactory вместо потока? Посмотрите на отредактированный ответ выше? – morganw09dev

+0

Это то, что я сделал Морган, я использовал DAOFactory вместо нити как F illippo предложил Ваш комментарий также помог многим, я понял некоторые вещи, которые были неоднозначными для меня. Большое вам спасибо. – Sara

1

Если ваш файл находится в вашей базе кода, вы должны использовать classLoader для его загрузки.

+0

Спасибо Филиппу за ваш ответ Это именно то, что я делаю – Sara

+0

Это вообще работает для меня this.getClass(). GetClassLoader(). GetResourceAsStream (path_relative) –

+0

вот что я делаю я новичок здесь я не могу добавить изображение в этом комментарии я добавлю его в сообщение – Sara

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