2010年4月21日 星期三

Javac

. 簡單的方式, 當需要編譯的 class 都在目前目錄下

如果要編一個 java 程式, 要其它的 class, 會在目前目錄下找出 class,
如有一個 FinalTest.java 與 Point.java

1. javac -verbose FinalTest.java

[Andy@t-ap188 row]$ javac -verbose Finaltest.java
[parsing started Finaltest.java]
[parsing completed 37ms]
[search path for source files: .]
[search path for class files: /usr/java/jdk1.6.0_19/jre/lib/resources.jar,/usr/java/jdk1.6.0_19/jre/lib/rt.jar,/usr/java/jdk1.6.0_19/jre/lib/sunrsasign.jar,/usr/java/jdk1.6.0_19/jre/lib/jsse.jar,/usr/java/jdk1.6.0_19/jre/lib/jce.jar,/usr/java/jdk1.6.0_19/jre/lib/charsets.jar,/usr/java/jdk1.6.0_19/jre/classes,/usr/java/jdk1.6.0_19/jre/lib/ext/localedata.jar,/usr/java/jdk1.6.0_19/jre/lib/ext/sunpkcs11.jar,/usr/java/jdk1.6.0_19/jre/lib/ext/sunjce_provider.jar,/usr/java/jdk1.6.0_19/jre/lib/ext/dnsns.jar,.]
[loading java/lang/Object.class(java/lang:Object.class)]
[loading java/lang/String.class(java/lang:String.class)]
[checking Finaltest]
[loading ./Point.class]
[wrote Finaltest.class]
[total 325ms]

Final.java
{{{
public class Finaltest {
public static void main(String[] args) {
Point pa = new Point();
//pa.x = 10;
//pa.y = 11;
//System.out.println("pa.x:" + pa.x + ", pa.y" + pa.y);
}


}

Point.java
{{{
public class Point {
public int x;
public int y;
}


}}}


此時 Point 還沒有作 package 所以不用 import


在 java Finaltest 時
{{{
[Loaded java.lang.Object from shared objects file]
[Loaded java.io.Serializable from shared objects file]
[Loaded java.lang.Comparable from shared objects file]
[Loaded java.lang.CharSequence from shared objects file]
[Loaded java.lang.String from shared objects file]
[Loaded java.lang.reflect.GenericDeclaration from shared objects file]
[Loaded java.lang.reflect.Type from shared objects file]
[Loaded java.lang.reflect.AnnotatedElement from shared objects file]
[Loaded java.lang.Class from shared objects file]
[Loaded java.lang.Cloneable from shared objects file]
[Loaded java.lang.ClassLoader from shared objects file]
[Loaded Finaltest from file:/home/Andy/Desktop/working/JavaAll/JavaPractice/row/]
[Loaded Point from file:/home/Andy/Desktop/working/JavaAll/JavaPractice/row/andy/]


}}}


2. 如果在編譯的檔案放在 其於目錄要用 -classpath or export CLASSPATH=""
如將 Point 移動到 ./andy

javac -classpath ./andy -verbose Finaltest.java
java -verbose -classpath ./:./andy Finaltest

3. 如果在 Point 使用 package 代表告訴 在哪個下的物件
則在
Point.java
{{{
package andy;

public class Point {
public int x;
public int y;
}

}}}

Finaltest
{{{
import andy.Point;

public class Finaltest {
public static void main(String[] args) {
Point pa = new Point();
//pa.x = 10;
//pa.y = 11;
//System.out.println("pa.x:" + pa.x + ", pa.y" + pa.y);
}


}


}}}

Reference:
http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/javac.html

沒有留言:

張貼留言