java与javac命令行都包含什么?它们的区别在哪?

BSO 2020-09-02 08:59:58 java常见问答 3596

上次我们已经介绍过javac的标准程序有哪些?今天我们再来了解一下java和javac的命令行都包含什么,以及它们的区别在哪,该如何操作?

首先,我们都知道的是,javac和java命令行都有-classpath选项。但是因为编程语言的不同所以操作的流程也大相径庭,接下来就分别为大家简述这两者的操作流程。

先说一下javac。它的操作方式如下:

1.-classpath,设定要搜索类的路径,可以是目录,jar文件,zip文件(都包含class文件),会覆盖掉所有在CLASSPATH里面的设定。

2.-sourcepath,设定要搜索编译所需java文件的路径,可以是目录,jar文件,zip文件(都包含java文件)。

因此一个完整的javac命令行如下所示:

假如abc.java在路径c:\src里面,在任何的目录都可以执行以下命令来编译:

javac - classpath c: \classes;
c: \jar\ abc.jar;
c: \zip\ abc.zip - sourcepath c: \source\ project1\ src;
c: \source\ project2\ lib\ src.jar;
c: \source\ project3\ lib\ src.zip c: \src\ abc.java

同时,表示编译需要c:\classed下面的class文件,c:\jar\abc.jar里面的class文件,c:\zip\abc.zip里面的class文件;

还需要c:\source\project1\src下面的源文件,c:\source\project2 \lib\src.jar里面的源文件,c:\source\project3\lib\src.zip里面的源文件;

但是需要注意的是:jar,zip里面的源文件基本不会改动,但是目录下的源文件,有可能会被重新编译。

再来说一下java的操作流程。

1.-classpath,设定要搜索的类的路径,可以是目录,jar文件,zip文件(都包含class文件),会覆盖掉所有的CLASSPATH的设定。由于所要执行的类也是要搜索的类的一部分,因此需要把这个类的路径也放到-classpath的设置里面。主要表现在,在要执行的类的路径里面执行java时,一定要添加上点号(.)标示,本目录也要搜索。

假如abc.class在路径c:\src里面,可以在任何路径下执行以下命令:

java - classpath c: \classes;
c: \jar\ abc.jar;
c: \zip\ abc.zip;
c: \src abc

那么问题来了,如果main.class属于c:\jar\abc.jar,并且在com.cnblogs.jeffchen这个包里,那么执行:

java - classpath c: \classes;
c: \jar\ abc.jar;
c: \zip\ abc.zip;
com.cnblogs.jeffchen.main

但是假设classpath中包含多个jar包呢?并且其他jar包中也有com.cnblogs.jeffchen,那么会出现什么情况?

会出现如下情况:

1.在windows下,文件路径的分割符为反斜杠\类或者java文件列表的分割符为分号 ;

2.在linux下,文件路径的分隔符位斜杠/类或者java文件列表的分隔符为冒号 :

为大家举一个linux下编译和运行的例子:

/usr/local / java / bin / javac - classpath / tmp / javatest / lib / mail - 1.3 .3.jar - d / tmp / javatest / bin / /tmp/javatest / src / jp / co / realseed / Capability.java /
    usr / local / java / bin / java - classpath / tmp / javatest / lib / mail - 1.3 .3.jar: /tmp/javatest / bin / jp.co.realseed.Capability

以上就是关于java与javac命令行都包含哪些以及它们的区别主要表现在哪里的具体描述。想要了解更多java常见问题,敬请关注奇Q工具网。

推荐阅读:

javac文件列表的定义是什么?如何编译程序?

java常量池在哪?有什么用处?

java自定义异常详解