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

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

IT小君   2021-11-15T14:02:03

在 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>

为什么会发生这种情况?

感谢所有帮助

服务器费用不足...
评论(5)
IT小君

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

javac /home/pathToFolderA/src/fileName.java

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

2021-11-15T14:02:03   回复
IT小君

您不应该将类路径设置为指向 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
2021-11-15T14:02:03   回复
IT小君

在 CentOS 5 linux 上使用一些基本的 java 应用程序,我classpath设置指向home/pathToJava/bin哪个包含javacjava

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

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

2021-11-15T14:02:03   回复
IT小君

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

例如:

HelloWorld.java

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

并确保将目录更改为与文件相同的文件夹

2021-11-15T14:02:04   回复
IT小君

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

2021-11-15T14:02:04   回复