日期:2014-05-16 浏览次数:20963 次
一、
在路径~/java_study/java_code/pageTest 中有一个java文件:staticinit.java 代码如下:
package java2.java_code.pageTest;
class Bowl
{
?Bowl(int marker)
? {
?System.out.println("Bowl(" + marker + ")");
?}
?void f1()
? {
?System.out.println("Ok");
?}
?}
?class Cupboard
? {
?Bowl b1 = new Bowl(1);
?static Bowl b2 = new Bowl(2);
?Cupboard()
?{
?System.out.println("Cupboard()");
?}
?static Bowl b3 = new Bowl(3);
?}
?class Table
? {
?Table()
?{
?System.out.println("Table()");
?}
?Table(String a,int i){
?this();
?System.out.println("Ok");
?}
?}
?public class staticinit
?{
????
?static Cupboard t1 = new Cupboard();
?static Table t2;
?Bowl t3 = new Bowl(10);
?void print()
?{
?t3.f1();
?}
?public static void main(String[] args)
? {
???? new Bowl(6);
?System.out.println("Creating new Cupboard() in main");
?new Cupboard();
?System.out.println("Creating new Cupboard() in main");
?//staticinit od = new staticinit();
?//od.t3.f1();
?Table t4 = new Table("aa",1);
?}
?}
终端的当前目录为~/java_study/java_code/pageTest
环境变量为:
CLASSPATH=".:/usr/lib/jdk_6u26/java-6-sun/lib"
使用命令:
javac -d . staticinit.java
会在当前目录下生成一个java2的目录,里面包含class文件
java java2.java_code.pageTest.staticinit
可执行此程序,终端上会看见一些输出
二、
修改staticinit.java的main函数为:
public static void main2()
? {
???? new Bowl(6);
?System.out.println("Creating new Cupboard() in main");
?new Cupboard();
?System.out.println("Creating new Cupboard() in main");
?//staticinit od = new staticinit();
?//od.t3.f1();
?Table t4 = new Table("aa",1);
?}
保存,执行命令javac -d . staticinit.java
重新创建一个java文件:two.java,代码如下:
import java2.java_code.pageTest.*;
public class two
{
??? public static void main(String[] args)
??? {
??????? staticinit t = new staticinit();
??????? t.main2();
??? }
}
在two中引用staticinit。
执行命令:javac two.java后会出现如下错误:
two.java:6: 无法访问 staticinit
错误的类文件: ./staticinit.java
文件不包含类 staticinit
请删除该文件或确保该文件位于正确的类路径子目录中。
??????? staticinit t = new staticinit();
??????? ^
1 错误
这是因为 staticinit.java文件存在的缘故,把staticinit删掉即可,重新执行命令javac two.java,正常
再执行命令:java two,终端会有输出
三、
接一、二步骤
执行命令:
jar cvf java2.jar java2/* 将java2打包成jar包
javac -cp java2.jar two.java 编译two
java -cp java2.jar:$CLASS_PATH two 执行two
当外部引用一个jar中,有一个较简单的方法,就是将该 jar 的路径加入CLASS_PATH中,剩下的操作就和普通的包没什么多大区别了:
import //引用一个包
完成后 javac、java 即可,不需要添加别的参数
?