2015-05-28 44 views
2

我想了解更多关于javac以及如何使用命令行使用Java的开发人员工具。使用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

时,才应使用此工具作为练习。一般来说,你应该使用像maven或者grade或者你的IDE这样的内置工具。 –

回答

3

类路径为.class文件,而不是.java文件。

javac命令需要正确的路径来编译.java文件。所以

javac ./PF/MainClass.java 

将在当前目录中创建类文件。

如果你的MainClass.java依赖于任何需要正确编译的类文件,那么你将这些类/ jar文件放在classpath中。

1

这不是类路径的工作方式。您可以使用类路径指向您的Java文件需要编译的类。您不要使用类路径来指向Java文件本身。

要么进入的PF目录,做到这一点:

javac MainClass.java 

将创建PF目录里面的MainClass.class文件。相反,如果你想从你的桌面在桌面上创建的MainClass.class文件,那么,这样做:

javac PF/MainClass.java 
+0

但是我想从'PF'外面的'PF'下编译一个文件... – nbro

+0

@Xenomorph请参阅我的答案的后半部分。给javac提供.java文件的完整路径。 –

+0

但是为什么它不能用'-classpath'?我认为这个选项的目的是确定在哪里找到要编译的文件。现在,如果我使用你所建议的技术,并且如果我的类MainClass.java在同一个目录PF中再次使用其他类,则会得到这种类型的错误:error:can not find symbol。 .. – nbro

-1

取出-classpath。如果你在需要java文件的地方(你目前不在),你也可以删除那个PF /。

0

-classpath

Specifies the path javac uses to look up classes needed to run javac or being referenced by other classes you are compiling. Overrides the default or the CLASSPATH environment variable if it is set. Directories are separated by colons. It is often useful for the directory containing the source files to be on the class path. You should always include the system classes at the end of the path.

类路径来指定需要在你的类中使用编译的源代码。例如,在这段代码中,如果你正在访问另一个类,那么你应该指定该类的编译源的位置。

在你的情况下,如果没有任何类依赖不那么简单地删除类路径的选择和使用编译[文件夹内导航]

javac Mainclass.java 
+0

我知道我可以像往常一样从文件夹“PF”中正常编译,但目的是真正能够从文件夹外部编译.java文件是... – nbro