JAVA和JAVAC命令,JAVAJAVAC命令
JAVA和JAVAC命令,JAVAJAVAC命令
- 什么是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 <http://www.cnblogs.com/JeffChen/archive/2008/01/15/1039708.html>
相关文章
- 暂无相关文章
用户点评