Почему этот javac: файл не найден? - PullRequest
2 голосов
/ 24 мая 2011

Работа с некоторыми базовыми java-приложениями в CentOS 5 linux, и у меня classpath установлен на home/pathToJava/bin, который содержит javac и java

и у меня есть .java файлы в home/pathToFolderA/src

и home/pathToFolderB/gen-java

Когда я запускаю javac и java в home/pathToFolderA/src, все работает отлично

Но когда я запускаю javac из home/pathToFolderB/gen-java на fileName.java, я получаю ошибку "файл не найден", в частности

javac: file Not found: fileName.java
Usage: javac <options> <source files>

Почему это могло произойти?

Спасибо за помощь

Ответы [ 5 ]

6 голосов
/ 24 мая 2011

Путь к классам используется для поиска файлов класса , а не исходных файлов.(Также он не используется для поиска двоичных файлов java и javac; они находятся в вашем обычном пути.) Вам необходимо указать файлы для явной компиляции:уже в /home/pathToFolderA/src, тогда вы можете просто использовать fileName.java, поскольку он рассматривается как относящийся к вашему текущему каталогу.

5 голосов
/ 24 мая 2011

Не следует указывать classpath , чтобы он указывал на каталог bin JDK - вместо этого это должна быть переменная окружения PATH , которая служит для цели classpath. (Classpath определяет список jar-файлов и каталогов, содержащих скомпилированный код Java .class; переменная PATH определяет список путей, где оболочка должна искать и находить программы для выполнения, когда они не найдены в текущем каталоге - так что если вы введите, например, zip - он будет смотреть во всех каталогах, определенных в PATH, и обнаружит, что программа zip находится в /usr/bin) Во-вторых, если вы хотите скомпилировать исходники из обоих каталогов, вам нужно указать:

  • все пути, где находятся источники (оба home/pathToFolderA/src и home/pathToFolderB/gen-java)
  • путь, по которому должны быть скомпилированы файлы .class
  • укажите в classpath любую библиотеку, которую вы можете использовать в своих исходных файлах

Подводя итог, можно было бы скомпилировать что-то вроде этого:

javac -d /home/pathToFolderWithResultsOfCompilation -classpath /path/to/some.jar:/path/to/another.jar home/pathToFolderA/src/*.java home/pathToFolderB/gen-java/*.java 

и для запуска ваших скомпилированных программ:

java -classpath /path/to/some.jar:/path/to/another.jar:/home/pathToFolderWithResultsOfCompilation full.name.of.your.Java
3 голосов
/ 24 мая 2011

Работа с некоторыми основными java-приложениями в CentOS 5 linux, и у меня classpath установлен на home/pathToJava/bin, который содержит javac и java

Это неправильно. Путь к классам используется для поиска *.class файлов, а не специфичных для операционной системы исполняемых файлов. Каталог bin вашего JDK не принадлежит пути к классам. Обратите внимание, что путь к классу также не предназначен для поиска *.java исходных файлов.

При запуске javac вам необходимо указать путь к исходному файлу, если он не находится в текущем каталоге.

1 голос
/ 04 декабря 2013

убедитесь, что имя вашего файла не содержит пробелов

Например:

HelloWorld.java

обычно возникают ошибки при переименовании файла в прошлом, что приводит к появлению пробела между именем и точкой (это ошибка: HelloWorld .java).

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

0 голосов
/ 24 мая 2011

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

...