Проблема с classpath программы командной строки Java - PullRequest
0 голосов
/ 16 сентября 2011

, поэтому у меня есть довольно большой проект в Eclipse, который отлично работает и обращается к файлам и т. Д. А в Eclipse я обращаюсь к файлам с именем локального каталога по отношению к корню каталога проекта.

Так, например, мой проект называется «Project1» и находится в каталоге «MyProjects», поэтому он выглядит так: «MyProjects / Project1».Я хочу получить доступ к файлу в папке «MyProjects», который называется «hello.text».Поэтому я просто делаю «../hello.text», и он отлично работает, когда я делаю это в Eclipse.

Проблема, с которой я столкнулся, заключается в том, что когда я запускаю программу, используя команду «java Project1», она запускаетпрограмма в порядке, но он не может получить доступ к этому файлу, потому что при запуске программ из командной строки он помечает их из каталога «bin», который находится внутри каталога «Project1».Так что это портит всю программу.Есть ли способ легко изменить это в моей среде Windows или Eclise?Я надеюсь, что мой вопрос имеет смысл.Я хочу, чтобы программа выполнялась из каталога "Project1", если это возможно, поэтому мне не нужно каждый раз менять местоположение файла.

Ответы [ 3 ]

1 голос
/ 16 сентября 2011

Как насчет предоставления аргумента каталога, чтобы вам никогда не приходилось об этом беспокоиться?

1 голос
/ 16 сентября 2011

Вы можете использовать один из методов класса ClassLoader

public URL getResource(String name)
or 
public InputStream getResourceAsStream(String name)

для поиска и доступа к любому ресурсу в classpath способом, который не зависит от расположения кода Например,

InputStream myTextFileStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("Project1/Hello.txt") ;
0 голосов
/ 16 сентября 2011

Не можете ли вы запустить программу на Java из родительского каталога bin?

, например

Project1> java -classpath bin MyApp

Помогает ли этот ответ для получения classpath из Eclipse справка?

...