alg*_*der 2 java linux command-line centos javac
在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>
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况?
谢谢你的帮助
类路径用于查找类文件,而不是源文件.(它也不用于查找java和javac二进制文件;它们可以在您的正常路径中找到.)您需要指定要显式编译的文件:
javac /home/pathToFolderA/src/fileName.java
Run Code Online (Sandbox Code Playgroud)
显然,如果你已经在 /home/pathToFolderA/src那里,你可以使用,fileName.java因为它被视为相对于你当前的目录.
您不应该将类路径设置为指向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
Run Code Online (Sandbox Code Playgroud)
并运行已编译的程序:
java -classpath /path/to/some.jar:/path/to/another.jar:/home/pathToFolderWithResultsOfCompilation full.name.of.your.Java
Run Code Online (Sandbox Code Playgroud)