/ / Por que esse erro javac: File Not Found? - java, linux, linha de comando, centos, javac

Por que esse erro javac: File Not Found? - java, linux, linha de comando, centos, javac

Trabalhando com alguns aplicativos java básicos no linux do CentOS 5 e eu tenho meu classpath definido para apontar para home/pathToJava/bin que contém javac e java

e eu tenho .java arquivos em home/pathToFolderA/src

e home/pathToFolderB/gen-java

Quando eu corro javac e java dentro home/pathToFolderA/src tudo funciona perfeitamente

Mas quando eu corro javac de dentro home/pathToFolderB/gen-java em fileName.java Eu recebo um erro de arquivo não encontrado, especificamente

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

Por que isso poderia estar acontecendo?

Obrigado por toda ajuda

Respostas:

5 para resposta № 1

Você não deve definir o seu classpath para apontar para o seu diretório JDK bin - em vez disso, deve ser o CAMINHO variável de ambiente, que serve um diferentefinalidade para classpath. (O classpath define uma lista de jars e diretórios contendo o código Java .class compilado; a variável PATH define uma lista de caminhos onde o shell precisa procurar e localizar programas a serem executados quando eles não são encontrados no diretório atual - então se você digite por exemplo zip - olharia em todos os diretórios definidos em PATH e descobrir que zip programa está localizado em /usr/bin) Em segundo lugar, se você quiser compilar fontes de ambos os diretórios, você precisa especificar:

  • todos os caminhos onde estão as fontes (ambos home/pathToFolderA/src e home/pathToFolderB/gen-java)
  • o caminho onde os arquivos .class compilados serão gerados
  • especifique no classpath qualquer biblioteca que você possa usar em seus arquivos de origem

Para resumir, seria algo como isto para compilar:

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

e para executar seus programas compilados:

java -classpath /path/to/some.jar:/path/to/another.jar:/home/pathToFolderWithResultsOfCompilation full.name.of.your.Java

6 para resposta № 2

O classpath é usado para encontrar classe arquivos, não fonte arquivos. (Nem é usado para encontrar o java e javac binários; esses são encontrados em seu caminho normal.) Você precisa especificar os arquivos para compilar explicitamente:

javac /home/pathToFolderA/src/fileName.java

Obviamente, se você já está dentro /home/pathToFolderA/src então você pode simplesmente usar fileName.java porque isso é tratado como sendo relativo ao seu diretório atual.


3 para resposta № 3

Trabalhando com alguns aplicativos java básicos no linux do CentOS 5 e eu tenho meu classpath definido para apontar para home/pathToJava/bin que contém javac e java

Isso está errado. O classpath é usado para encontrar *.class arquivos, não executáveis ​​específicos do sistema operacional. o bin O diretório do seu JDK não pertence ao caminho de classe. Note que o classpath também não é para encontrar *.java Arquivos Fonte.

Quando você corre javac você precisa especificar o caminho para o arquivo de origem, se ele não estiver no diretório atual.


1 para resposta № 4

certifique-se de que o seu nome de arquivo não contenha espaços

Por exemplo:

HelloWorld.java

geralmente os erros ocorrem quando você renomeia o arquivo por copy past que causará um espaço entre o nome e o ponto (este é o erro:HelloWorld .java).

e certifique-se de ter alterado o diretório para a mesma pasta em que seu arquivo


0 para a resposta № 5

Sem uma listagem do diretório "gen-java" eo comando exato que você está digitando, meu palpite é que você está tentando compilar um arquivo que não existe. O Linux é sensível a maiúsculas e minúsculas, então talvez esse seja o seu problema. Ou o arquivo não existe.