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 № 1Você 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
ehome/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 parahome/pathToJava/bin
que contémjavac
ejava
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.