使用MyEclipse编译运行程序 与 使用命令行编译运行程序

这是关于在命令行中,使用java -classpath的小实验。

 

首先,必须在系统环境变量中设置过classpath,如何设置见: http://www.21jn.net/html/72/n-272.html

 

开始我对编译路径的探讨,

首先,写一个小程序(我这个程序是不带包的,即没有package语句):

import java.io.File;
public class AquariumInSwing {

    public static void main(String[] args) {

        String myPath = System.getProperty( "java.class.path"); 
        System.out.println(myPath);
        myPath = System.getProperty("user.dir"); 
        System.out.println(myPath);
        File file = new File(".");
        System.out.println(file.getAbsolutePath());
		
    }
}

 

工程的目录是:D:\JavaWorkspace\Aquarium

.java的源文件在D:\JavaWorkspace\Aquarium\src下,

.class文件由MyEclipse编译后放在D:\JavaWorkspace\Aquarium\bin下,

使用MyEclipse编译,运行,得到的结果是(不包括--------------------------------):

--------------------------------------------------------------------

D:\JavaWorkspace\Aquarium\bin
D:\JavaWorkspace\Aquarium
D:\JavaWorkspace\Aquarium\.

--------------------------------------------------------------------

 

接下来,我希望在命令行中,执行该程序,看看输出的结果

 

 因为.class文件已经在bin下了,所以,我直接在命令行下去到
(1)D:   转到D盘

(2)cd D:\JavaWorkspace\Aquarium\bin  去到bin下
(3)java AquariumInSwing

得到的结果是:

--------------------------------------------------------------------

.;C:\Program Files\Java\jdk1.6.0_18\lib\dt.jar;C:\Program Files\Java\jdk1.6.0_18\lib\tools.jar
D:\JavaWorkspace\Aquarium\bin
D:\JavaWorkspace\Aquarium\bin\.

--------------------------------------------------------------------

完全不一样嘛~~~~~

怎么会这样???!!!!!!

 

我的估计是:MyEclipse执行程序时,通过-classpath修改了运行时的classpath,即覆盖了我们之前设置的环境变量classpath。

 

如果想在命令行中,得到与MyEclipse运行时一样的效果,可以这样:

java -classpath D:\JavaWorkspace\Aquarium\bin AquariumInSwing

结果:

----------------------------------------------------

D:\JavaWorkspace\Aquarium\bin
D:\JavaWorkspace\Aquarium
D:\JavaWorkspace\Aquarium\.

---------------------------------------------------

 

 

最后补充一点 文件夹的名字不要有空格,例如不要把JavaWorkspace起名为Java Workspace,

否则,-classpath 参数会不正确。

但是,如果真的有空格,可以使用引号,引住-classpath的参数,即:

java -classpath "D:\JavaWorkspace\Aquarium\bin" AquariumInSwing

 

最后,大家可以试试这个

java -classpath "%classpath%;D:\JavaWorkspace\Aquarium\bin" AquariumInSwing

其实,-classpath会替代系统环境变量中设置的classpath,如果不想被替代,可以通过%classpath%,然后再追加自己的classpath,记住用分号(;)分割。

你可能感兴趣的:(java基础)