为什么这个javac:File Not Found错误?

在CentOS 5 linux上使用一些基本的Java应用程序,我的classpath设置为home/pathToJava/bin ,其中包含javacjava

我在home/pathToFolderA/src.java文件

home/pathToFolderB/gen-java

当我在home/pathToFolderA/src运行javacjava ,一切正常

但是,当我从home/pathToFolderB/gen-javafileName.java运行javac我得到一个文件未find错误,具体

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

为什么会这样呢?

感谢所有帮助

Solutions Collecting From Web of "为什么这个javac:File Not Found错误?"

你不应该把你的类路径设置为指向你的JDK bin目录 – 而应该是PATH环境变量,它为classpath提供了一个不同的目的。 (类路径定义了一个包含已编译的Java .class代码的jar和目录列表; PATH变量定义了shell需要查看的路径列表,以及在当前目录中找不到的程序的位置 – 所以如果你键入例如zip – 它会查找PATH定义的所有目录,并确定zip程序位于/usr/bin )其次,如果要从两个目录编译源代码,则需要指定:

  • 源代码的所有路径( home/pathToFolderA/srchome/pathToFolderB/gen-java
  • 编译后的.class文件所在的路径
  • 在类路径中指定可能在源文件中使用的任何库

总结起来,这将是这样的编译:

 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 

类路径用于查找文件,而不是文件。 (也不是用来查找javajavac二进制文件;这些文件位于正常路径中)。您需要指定要显式编译的文件:

 javac /home/pathToFolderA/src/fileName.java 

显然,如果你已经 /home/pathToFolderA/src那么你可以使用fileName.java因为它被视为相对于你当前的目录。

在CentOS 5 linux上使用一些基本的Java应用程序,我的classpath设置为home/pathToJava/bin ,其中包含javacjava

那是错的 类路径用于查找*.class文件,而不是操作系统特定的可执行文件。 JDK的bin目录不属于类路径。 请注意,类路径也不适用于查找*.java源文件。

在运行javac ,如果不在当前目录中,则需要指定源文件的路径。

确保你的文件名不包含空格

例如:

 HelloWorld.java 

通常,当您通过复制重命名文件时会发生错误,这会在名称和点之间产生空格(这是错误: HelloWorld .java )。

并确保将目录更改为您的文件所在的文件夹

如果没有列出目录“gen-java”和你输入的确切命令,我的猜测就是你试图编译一个不存在的文件。 Linux是区分大小写的,所以也许这就是你的问题。 或者文件不存在。