2014-09-15 3 views
0

Я экспортировал свою программу в файл jar, но когда я ее запустил, кажется, что файл .properties не найден программой. Я убедился, что он был в файле jar &, он работал отлично до его экспорта. Я прочитал что-то об использовании getClass().getResourceAsStream() вместо FileInputStream и FileOutputStream, но, похоже, не может понять, как это поможет. Есть идеи? Это два метода, которые используют этот файл.Программа отлично работает в компиляторе, но не в jar (Java)

private void UpdateData() throws IOException{ 
     FileInputStream in = new FileInputStream("config.properties"); 
     Properties props = new Properties(); 
     props.load(in); 
     in.close(); 

     FileOutputStream out = new FileOutputStream("config.properties"); 
     props.setProperty("prop1", prop1TextArea.getText().toString()); 
     props.setProperty("prop2", prop2TextArea.getText().toString()); 
     props.setProperty("prop3", prop3TextArea.getText().toString()); 
     props.store(out, null); 
     out.close(); 

} 

    private void setText() throws IOException { 

     FileInputStream in = new FileInputStream("config.properties"); 
     Properties props = new Properties(); 
     props.load(in); 
     in.close(); 

     FileOutputStream out = new FileOutputStream("config.properties"); 
     prop1TextArea.setText(props.getProperty("prop1")); 
     prop2TextArea.setText(props.getProperty("prop2")); 
     prop3TextArea.setText(props.getProperty("prop3")); 
     out.close(); 
    } 
+0

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

+0

Если вы используете FileInputStream, не упаковывайте файл свойств в JAR-файл, скорее поместите файл свойств в путь выполнения (обычно то же, что и JAR, или возможно, что BAT-файл используется для его запуска !?) – munyul

ответ

3

Чтобы получить доступ к ресурсам в файле .jar вы должны получить доступ к ним в качестве ресурсов не в виде файлов.

.properties больше не находятся в файловой системе и поэтому вы не можете получить к ним доступ через FileInputStream.

Если вы хотите сохранить их впоследствии, вам нужно будет создать новый .properties при первом запуске вашей программы. Поэтому сначала нужно проверить, существует ли файл (например, через File.exists()) и либо работать без свойств из файла, либо создавать новый файл, а затем использовать его.

+0

Работал как шарм. Теперь это не так важно, но файл был создан на моем рабочем столе. Если бы я кому-то передал эту программу, можно ли создать файл в папке или что-то еще? Просто, чтобы сделать его немного чище. –

+1

Вы можете указать любой путь. Задайте новый вопрос, чтобы спросить, как вы можете указать путь, например. путь домой пользователей. –

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