我正在尝试更多地了解javac
以及如何使用命令行将开发人员工具用于Java。
据我所知,如果我们不在当前目录中,则需要选项-classpath
来指定javac
搜索我们的类和资源文件的路径,因为通常是类路径设置为我们当前的工作目录。
这是我目前的工作目录:
/Users/user1/Desktop
我正在尝试编译一个.java
文件,该文件位于:
/Users/user1/Desktop/PF/
,文件名为MainClass.java
。
我正在尝试使用以下命令编译它:
javac -classpath /PF MainClass.java
但它似乎不起作用,事实上我一直收到以下内容:
javac: file not found: MainClass.java
Usage: javac <options> <source files>
use -help for a list of possible options
我做错了什么?
答案 0 :(得分:3)
Classpath适用于.class
个文件,不适用于.java
个文件。
javac
命令需要正确的.java
文件路径才能编译它。所以
javac ./PF/MainClass.java
将在当前目录中创建类文件。
如果你的MainClass.java
依赖于任何正确编译的类文件,那么你将这些类/ jar文件放在类路径中。
答案 1 :(得分:1)
这不是类路径的工作原理。您可以使用类路径指向Java文件编译所需的类。您没有使用类路径指向Java文件本身。
进入PF目录并执行此操作:
javac MainClass.java
这将在PF目录中创建MainClass.class文件。如果您想在桌面上创建MainClass.class文件,那么从桌面执行此操作:
javac PF/MainClass.java
答案 2 :(得分:0)
<强> -classpath 强>
指定javac用于查找运行javac所需的类的路径 或者正在编译的其他类引用。覆盖了 默认值或CLASSPATH环境变量(如果已设置)。 目录由冒号分隔。它经常用于 包含要在类路径上的源文件的目录。您 应始终在路径末尾包含系统类。
类路径用于指定需要在类中使用的已编译源。例如,在此代码中,如果要访问另一个类,则应指定该类的已编译源的位置。
在你的情况下,如果没有任何类依赖,那么只需删除classpath选项并使用[在文件夹内导航]编译
public interface Kernel32 extends com.sun.jna.platform.win32.Kernel32 {
Kernel32 INSTANCE = (Kernel32)Native.loadLibrary("kernel32", Kernel32.class, com.sun.jna.win32.W32APIOptions.DEFAULT_OPTIONS);
boolean GetProductInfo(int dwOSMajorVersion, int dwOSMinorVersion, int dwSpMajorVersion, int dwSpMinorVersion, IntByReference pdwReturnedProductType);
}
答案 3 :(得分:-1)
删除-classpath。如果你在需要java文件的地方(目前你还没有),你也可以删除那个PF。