您的位置:首页 > 编程语言 > Java开发

JAVA和JAVAC命令

2016-01-21 18:12 260 查看
什么是java和javac ?

java与javac属于JDK里面的命令工具

java和javac的位置

我的JDK在windows目录(C:\ProgramFiles\Java\jdk1.7.0_60),打开目录 C:\Program Files\Java\jdk1.7.0_60\bin

可以看到java和javac 两个命令,如下图。



java和javac的用途和区别 ?

举个例子:

在目录D:\workspace\Practice\ClassAndObject\src\package1下面,新建一个class文件,名字叫HelloWorld



代码:

package package1;
public class HelloWorld {
public static void main (String arg[]) {
System.out.print("Hello World");
}
}

进入目录D:\workspace\Practice\ClassAndObject\src\package1,看到文件HelloWorld.java



使用javac 把源文件(java 文件)编译生成class文件

下面的例子是编译HelloWorld.java



javac -sourcepath[path] [file]

注意:

需要进入文件当前目录(D:\workspace\Practice\ClassAndObject\src\package1);
sourcepath 设定要搜索的java文件路径
[path]不必是当前目录,可以是上层目录
[file] xxx.java, 无需在前面加上包名(如:HelloWorld.java)

可以看到目录下面多了一个HelloWorld.class, 用记事本打开这个文件是乱码



使用java 执行类HelloWorld(之前使用javac编译出的类),结果为:Hello World



java -classpath [path][file]

注意:

不需要进入文件当前目录(D:\workspace\Practice\ClassAndObject\src);
classpath 设定要搜索的类文件路径,此时会覆盖环境变量里定义的CLASSPATH路径
[path]不必是当前目录,可以是上层目录
[package.file] 需要在文件前加上包名,无须加文件后缀(如:package1.HelloWorld)

总结:javac 是把一个HelloWorld.java类文件编译成HelloWorld.class, 然后使用java执行HelloWorld类

==================================================================================

转载: JAVA和JAVAC命令

javac和java命令行中的-classpath选项

这是个很基础的问题,但是因为基本上都是用现有的IDE工具 来开发java程序,所以很少有人意识到这一点。

javac

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

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

所以一个完整的javac命令行应该是这样的,

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

javac -classpathc:\classes;c:\jar\abc.jar;c:\zip\abc.zip -sourcepathc:\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
-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 -classpathc:\classes;c:\jar\abc.jar;c:\zip\abc.zip;com.cnblogs.jeffchen.main即可,但是如果classpath中包含多个jar包呢?并且其他jar包中也有com.cnblogs.jeffchen会发生什么情况?错误?

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

在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

From </article/4936285.html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: