Ubuntu下。我在
/home/sen/JavaProgram
下写了
CommandLine.java
public class CommandLine {
public static void main(String args[]){
for(int i=0; i<args.length; i++){
System.out.println("args[" + i + "]: " +
args[i]);
}
}
}
编译
javac CommandLine.java
生成
CommandLine.class
这个二进制文件。我的Ubuntu 12.04默认安装了
java version "1.7.0_80"
Java (TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
以及
javac 1.7.0_80
命令行调用
如果当前目录不是class文件所在目录,需要设置CLASSPATH:
export CLASSPATH=/home/sen/JavaProgram
顾名思义,CLASSPATH提供给Java runtime environment找class文件的,而PATH告诉bash去哪找命令的源程序的。要有export,使CLASSPATH成为环境变量,全局可知。
然后
java CommandLine A B C D
第二个参数就是class文件的名字。输出
args[0]:A
args[1]:B
args[2]:C
args[3]:D
当源文件中声明了package,使编译后的.class文件自动放在package对应的目录下
例如,我写了一个Dog.java文件
package animals;
public class Dog {
//...
}
我们新建好这个目录
/home/sen/JavaProgram/animals
那么我们只要
javac -d . Dog.java
编译后的字节码文件Dog.class就会自动被放在animals文件夹下。‘-d’参数后跟着package所在的路径(即CLASSPATH)。编译器和java虚拟机通过将package名字加到class path后来构造.class文件的路径。通过把.java文件和.class文件分开放,我们可以分享包,而不用分享源码。