java编译与执行时的路径很有问题,晚上在弄lucene的时候因为一个路径没有设置正确弄得我花园很久才注意到这个问题。
1、java编译器与java虚拟机对类路径的理解是不同的。
javac编译器总是在当前目录中查找文件,但是java虚拟机在类路径中有"."目录是才查看当前目录。
如果没有设置类路径,javac和java虚拟机不会产生问题,因为默认的类路径包含"."目录,如果设置了类路径但没有设置"."目录,可
以通过编译,但不能运行。
java虚拟机先找jre/lib和jre/lib/ext目录,如果找不到再查找类路径。
2、设置类路径。
可以用-classpath来指定类路径。
javac -classpath /home/user/project/javaclass:.:/user/local/common/sql.jar MyDog.java
在windows上可以用如下方式指定类路径
javac -classpath D:/java/project/lucene-3.0
.2/lucene-core-3.0.2.jar;. org/apache/lucene/demo/IndexFiles.java
执行路径。
java -classpath D:/java/project/lucene-3.0
.2/lucene-core-3.0.2.jar;. org/apache/lucene/demo/IndexFiles
也可以用set CLASSPATH来改变环境变量。
windows可以设置类路径
在dos下面设置.
set CLASSPATH=D:/user/class;.;
linux通过shell可以设置
export CLASSPATH=/home/user/class:.
3、编译时的注意事项
|root
|_com/
|___bianjw/
|______business/
|________DealClient.java
如果有如上的包结构com.bianjw.business,在编译的时候一定要在root目录运行javac
如javac com/bianjw/business/DealClient.java
在运行的时候可以 java com.bianjw/business.DealClient