在CentOS 5 linux上使用一些基本的Java应用程序,我的classpath
设置为home/pathToJava/bin
,其中包含javac
和java
我在.java
home/pathToFolderA/src
个文件
和home/pathToFolderB/gen-java
当我在javac
中运行java
和home/pathToFolderA/src
时,一切运作正常
但是当我在javac
home/pathToFolderB/gen-java
内fileName.java
运行javac: file Not found: fileName.java
Usage: javac <options> <source files>
时,我发现找不到文件错误,特别是
{{1}}
为什么会发生这种情况?
感谢您的帮助
答案 0 :(得分:6)
类路径用于查找类文件,而不是源文件。 (它也不用于查找java
和javac
二进制文件;这些文件位于您的正常路径中。)您需要指定要明确编译的文件:
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/src
和home/pathToFolderB/gen-java
)总结一下,编译会是这样的:
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
,其中包含javac
和java
那是错的。类路径用于查找*.class
个文件,而不是操作系统特定的可执行文件。 JDK的bin
目录不属于类路径。请注意,类路径也不适用于查找*.java
源文件。
当你运行javac
时,你需要指定源文件的路径,如果它不在当前目录中。
答案 3 :(得分:1)
确保您的文件名不包含空格
例如:
HelloWorld.java
通常在您通过复制重命名文件时会发生错误,这会导致名称和点之间出现空格(这是错误:HelloWorld .java
)。
并确保您将目录更改为
中文件所在的文件夹答案 4 :(得分:0)
如果没有目录“gen-java”的列表以及您正在键入的确切命令,我的猜测是您正在尝试编译不存在的文件。 Linux区分大小写,所以这可能就是你的问题。或者该文件不存在。