Проект Eclipse не может ссылаться на файл, используя относительные пути - PullRequest
1 голос
/ 29 февраля 2012

Мой файл находится в каталоге src. Однако, когда я пытаюсь вызвать его с помощью "src / readme.txt", файл не найден. Фактически в нем говорится, что Java ищет «C: \ Documents and settings \ john \ Мои документы \ Downloads \ eclipse-win32 \ eclipse \ coolCarsProject \ src \ readme.txt».

Как мне это исправить? Я не хочу все время указывать абсолютный путь.

Нужно ли исправлять classpath, buildpath или изменять корень проекта и т. Д.? Это совсем не очевидно из примерно 1000 настроек в Eclipse для новичка.

Ответы [ 3 ]

9 голосов
/ 29 февраля 2012

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

Если первое, то вам действительно следует подуматьо том, как ваше приложение будет запущено при фактическом развертывании, поскольку использование относительного пути к файлу означает, что программа всегда должна запускаться из одного и того же места: относительный путь относительно места, из которого запускается программа (текущий каталог).Если это действительно то, что вам нужно, то отредактируйте конфигурацию запуска в Eclipse, перейдите на вкладку Arguments и установите нужный рабочий каталог.Но каталог src находится не там, где вы должны поместить этот файл, так как он скопирует файл в целевой каталог вместе с классами, которые, вероятно, будут помещены в jar после развертывания приложения.

Если последнее, то вы должны рассматривать файл не как файл, а как ресурс, который загружается ClassLoader с использованием ClassLoader.getResourceAsStream () (или Class.getResourceAsStream ()).Прочитайте Javadoc этих методов, чтобы понять путь для прохождения.Если вы поместите файл непосредственно в src, он будет скопирован Eclipse в целевой каталог вместе с вашими классами в пакете по умолчанию.И поэтому вы должны использовать SomeClass.class.getResourceAsStream("/readme.txt"), чтобы загрузить его.

1 голос
/ 11 июня 2014

Попробуйте это:

String filePath = ".\\userFiles\\data.json";

, где «. \» - это корень проекта Eclipse, «userFiles» - это папка с файлами пользователя внутри проекта Eclipse.Поскольку мы говорим об ОС Windows, мы должны использовать «\», а не «/», как в Linux, но «\» является зарезервированным символом, поэтому мы должны набрать «\\» (двойной обратный слеш), чтобы получитьжелаемый результат.

1 голос
/ 29 февраля 2012

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

...