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

时间:2011-05-24 09:49:17

标签: java linux command-line centos javac

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

我在.java

中有home/pathToFolderA/src个文件

home/pathToFolderB/gen-java

当我在javac中运行javahome/pathToFolderA/src时,一切运作正常

但是当我在javac home/pathToFolderB/gen-javafileName.java运行javac: file Not found: fileName.java Usage: javac <options> <source files> 时,我发现找不到文件错误,特别是

{{1}}

为什么会发生这种情况?

感谢您的帮助

5 个答案:

答案 0 :(得分:6)

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

javac /home/pathToFolderA/src/fileName.java

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

答案 1 :(得分:5)

您不应将类路径设置为指向JDK bin目录 - 而应该是 PATH 环境变量,它对类路径有不同的用途。 (类路径定义了包含已编译的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

答案 2 :(得分:3)

  

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

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

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

答案 3 :(得分:1)

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

例如:

HelloWorld.java

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

并确保您将目录更改为

中文件所在的文件夹

答案 4 :(得分:0)

如果没有目录“gen-java”的列表以及您正在键入的确切命令,我的猜测是您正在尝试编译不存在的文件。 Linux区分大小写,所以这可能就是你的问题。或者该文件不存在。