java与javac的区别(推荐2篇)
学过Java的都知道javac,它是Java语言的编译器,那么,这两者有什么具体的区别呢?下面读文网小编给大家介绍一下Java和javac的区别。
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。
javac工具读由java语言编写的类和接口的定义,并将它们编译成字节代码的class文件。javac 可以隐式编译一些没有在命令行中提及的源文件。用 -verbose 选项可跟踪自动编译。
javac遇到的编译问题
如果main.class属于c:jarabc.jar,并且在com.cnblogs.jeffchen这个包里,那么执行java -clasSPAth c:classes;c:jarabc.jar;c:zipabc.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
java与javac的-classpath命令的区别
1.java
-classpath, 设定要搜索的类的路径,可以是目录,jar文件,zip文件(里面都是class文件),会覆盖掉所有的CLASSPATH的设定。
由于所要执行的类也是要搜索的类的一部分,所以一定要把这个类的路径也放到-classpath的设置里面。
表现在,在要执行的类的路径里面执行java时,一定要添加上点号(.)标示本目录也要搜索。
假设abc.class在路径c:src里面
可以在任何路径下执行以下命令
java -classpath c:classes;c:jarabc.jar;c:zipabc.zip;c:src abc
2.javac
-classpath,设定要搜索类的路径,可以是目录,jar文件,zip文件(里面都是class文件),会覆盖掉所有在CLASSPATH里面的设定。
-sourcepath, 设定要搜索编译所需java 文件的路径,可以是目录,jar文件,zip文件(里面都是java文件)。
所以一个完整的javac命令行应该是这样的,
假设abc.java在路径c:src里面,在任何的目录的都可以执行以下命令来编译。
javac -classpath c:classes;c:jarabc.jar;c:zipabc.zip -sourcepath c:sourceproject1src;c:sourceproject2 libsrc.jar;c:sourceproject3libsrc.zip c:srcabc.java
表示编译需要c:classed下面的class文件,c:jarabc.jar里面的class文件,c:zipabc.zip里面的class文件
还需要c:sourceproject1src下面的源文件,c:sourceproject2 libsrc.jar里面的源文件,c:sourceproject3libsrc.zip里面的源文件,
注意:jar,zip里面的源文件不会有什么改动,目录下的源文件,有可能会被重新编译。