JAVA和JAVAC 命令行

转自:http://www.blogjava.net/pdw2009/archive/2008/06/12/207413.html?opt=admin

javac和java命令行中的-classpath选项
这是个很基础的问题,但是因为基本上都是用现有的IDE工具 来开发java程序,所以很少有人意识到这一点。
javac
-classpath,设定要搜索类的路径,可以是目录,jar文件,zip文件(里面都是class文件),会覆盖掉所有在CLASSPATH里面的设定。
-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
-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会发生什么情况?错误?

在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

时间: 2024-08-27 23:33:20

JAVA和JAVAC 命令行的相关文章

ubuntu下使用java、javac命令行编译工程

一.java和javac命令行 (1)javac命令行 javac.exe用于编译java源文件,生成.class文件 语法:javac  [option]  source 常用的[option]选项: A.-classpath  <路径>(-cp缩写):指定要使用的类路径或要使用的jar包的路径(jar文件.zip文件(里面都是错啦搜索文件)),使用后 会覆盖CLASSPATH的设定 B.-d  <路径> :指定源文件编译后生成.class文件的存放位置 (2)java命令行 j

ZT : JAVA和JAVAC 命令行;java 带有包名编译并运行,附带外部依赖jar包运行

ZT: https://blog.csdn.net/just3do/article/details/68957618 有时候写个小测试,不想开idea,就用cmder,但是老忘记怎么编译,就copy别人的一份博客. javac和java命令行中的-classpath选项 这是个很基础的问题,但是因为基本上都是用现有的IDE工具 来开发java程序,所以很少有人意识到这一点.javac-classpath,设定要搜索类的路径,可以是目录,jar文件,zip文件(里面都是class文件),会覆盖掉所

JAVA代码在命令行下的编译

p { text-indent: 2em } .main { font-weight: bolder } 目的 跟C++一样,JAVA可以通过命令行直接编译得到字节码文件,并且使用java命令运行.通过JAVA的编译和运行命令只是熟悉一下JAVA的一些特征,包括包和目录,classpath,jar格式:而且在调试小程序的时候其实用命令行是足够的. 但是在进行大型项目的时候还是要用较大的IDE,例如eclipse和NetBeans,显然eclipse是比NetBeans要复杂得多的,这里不说. 主

用java实现从命令行接收多个数字,求和之后输出结果。

用java实现从命令行接收多个数字,求和之后输出结果. 1 设计思想: (1)建立类. (2)输出参数个数. (3)定义int型的num和sum,分别用来存储参数和参数的和. (4)用for循环讲参数强制转换成int型,同时将转化的参数和sum相加,用sum记录最后的结果. (5)输出sum. 2 程序流程图: 3源代码: package Csxj;public class Csxj { public static void main(String[] args) { System.out.pr

Java文件cmd命令行形式运行

首先你得安装好java jdk,配置好相应的环境变量. 你可以在c盘目录下建立一个txt文件. 把文件后缀名改成.java 然后打开命令行,win+r 写上cmd回车常用cmd命令: 文件列表 dir/w进入目录 cd 目录路径 (tab键盘有提示)  cd ..代表上级目录 目录结构打印 tree查看文件内容 type选择文件时可以用tab键来补全 当然,其实有更简洁的方法,就是去到你所要的目录下,按着shift键+右键菜单点击在此处打开命令窗口即可 运行javac编译命令,javac tes

java与javac命令的功用

一.javac用来编译java程序,比如说我写了一个Server.java文件,首先通过命令行进入.java文件所在的路径, 然后通过输入 javac Server.java 命令行来完成编译,编译之后将生成一个对应的Server.class文件: 二.java 用来运行java程序,命令格式是:java 类名.(注意,类名不包含.class后缀)本例中通过命令行进入.class所在路径,输入:java Server 即可运行java程序.

java程序——从命令行接收多个数字,求和之后输出结果

命令行参数都是字符串,必须先将其转化为数字,才能相加.以下是流程图,源代码和输出结果. 流程图: 源代码: import java.util.Scanner; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan = new Scanner(System.in); // 创建Scanner类对象 int n; System.out.p

java与javac命令笔记

Java对待.java文件与.class文件是有区别的.对.java文件可以直接指定路径给它,而java命令所需的.class文件不能出现扩展名,也不能指定额外的路径给它,对于Java所需的.class文件,必须通过classpath来指定. java -classpath 或者 java -cp 方式指定类路径时,先根据命令行中的classpath选项中指定的路径去寻找.class文件,找不到时再到全局的classpath环境变量中去寻找. 当你使用了另外的包的时候, 还可以采用这种方法 $

java自带命令行工具(jmap,jhat,jinfo)

(1)JMAP 1.作用 打印进程,core文件,和远程进程的共享对象存储map或堆存储器的详细信息. 2.使用 jmap [ options ] pid jmap [ options ] executable core jmap [ options ] [ pid ] [email protected] ] remote-hostname-or-IP 如果指定的进程是在64位Java虚拟机(JVM)上运行,那么你可能需要指定-J-d64选项,例如:jmap -J-d64 -heap pid.