使用javac和命令行编译java文件

时间:2015-05-28 18:26:31

标签: java command-line compilation javac

我正在尝试更多地了解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

我做错了什么?

4 个答案:

答案 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。