2012-06-17 6 views
1

Три дня я пытался выяснить, как читать файл, используя относительный путь к файлу. В eclipse это компилируется и отлично работает, но когда я экспортирую приложение. В нем говорится, что он не может найти файл. вот скриншот и код, над которым я работаю.java file relative path in eclipse

Этот код работает, но только в eclipse он компилирует и делает работу отлично. Но когда я экспортировать его в качестве работоспособный файл фляги я получаю сообщение об ошибке, что он не может найти licenca.txt

BufferedReader in = new BufferedReader(new FileReader(new File("licenca.txt").getPath())); 
     String str; 
     while ((str = in.readLine()) != null) { 
     taLicenca.append(str + "\n"); 

    } 

вот скриншот моих файлов проекта

files http://img207.imageshack.us/img207/5317/63432445.png

я попробовал использовать функции сканера, все тот же результат, он работает в eclipse, но не работает при экспорте. Вот сообщение об ошибке:

error http://img98.imageshack.us/img98/1771/greskaa.png

+0

Относительный путь зависит от рабочего каталога приложения. Более того, я думаю, вы не можете просто получить доступ к файлам внутри вашей банки. Подумайте об использовании метода 'class.getResource', если он находится внутри банки. Если ваш файл находится в той же папке, что и jar, вы можете использовать путь jar (см. [Link] (http://stackoverflow.com/questions/320542/how-to-get-the-path-of-a-running -jar-файл)). Также вы можете сохранить полный путь к лицензии в реестре, но это зависит от вашей среды. – nidu

ответ

6

Я буду держать пари, что это будет работать, если вы поместите этот файл в путь к классам.

Изменить код так:

InputStream is = this.getClass().getClassLoader().getResourceAsStream("licenca.txt"); 
BufferedReader in = new BufferedReader(new InputStreamReader(is)); 
String str; 
while ((str = in.readLine()) != null) { 
    taLicenca.append(str + "\n"); 
} 

Попробуйте и посмотрите.

+0

+1 Да, это сработает, но я думаю, он должен понять, что произошло :) –

+0

Он уже использует Eclipse, чтобы замаскировать свой недостаток знаний с помощью CLASSPATH. Я думаю, что корабль уже отплыл. – duffymo

+0

no it wont work: P , когда я добавляю 'InputStream is = this.getClass(). GetClassLoader(). GetResourceAsStream (" licenca.txt ");' это то, что мне нужно передать его в тип InputStream, и когда я это сделаю который отображает эту ошибку при компиляции Exception в потоке «main» 'java.lang.Error: проблема неразрешенной компиляции: \t Тип несоответствия: невозможно преобразовать из java.io.InputStream в org.omg.CORBA.portable.InputStream' –

0

Это происходит потому, что ваш файл экспортируется как часть jar файла, поэтому для создания jar файла пытается использовать ant или maven или semething еще, или вручную скопировать файл в каталоге с вашей баночкой, она вызывает start directory ,