疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

运行java程序


 

运行Java程序
        运行Java程序使用java命令,启动命令行窗口,进入HelloWorld.class所在的位置,在命令行窗口里直接输入java命令,不带任何参数或选项,将看到系统输出大量提示,告诉开发者如何使用java命令。
        对于初学者而言,当前只要掌握java命令的如下用法:
        java Java 类名
        值得注意的是,java命令后的参数是Java类名,不是字节码文件的文件名,也不是Java源文件名。
        通过命令行窗口进入HelloWorld.class所在的路径,输入如下命令:
        java HelloWorld
        运行上面命令,将看到如下输出:
        Hello Java!
        这表明Java程序运行成功
    如果我们运行java helloworld或者java hello World等命令,将会看到如图1.8所示的错误提示
        因为Java是区分大小写的语言,所以java命令后的类名必须严格区分大小写,如果大小写不正确,将会出现如图1.8所示的错误提示。
        与编译Java程序类似的是,我们也可以在EditPlus里集成运行Java程序的工具,集成运行Java程序的设置界面如图1.9所示:
        在如图1.9所示设置中,似乎运行Java程序的命令是java无扩展名的文件,实际上这只是利用了一种巧合;大部分时候,Java源文件的主文件名(无扩展名的文件名)与类名相同,因此实际上还是执行的java.Java类命令。
        完成了如图1.9所示设置后,返回EditPlus的主界面,在“工具”菜单中将会增加一个“运行Java程序”的菜单项,单击该菜单项,将可以运行EditPlus当前打开的Java程序。
根据CLASSPATH 环境变量定位类
        如果以前学习过Java的读者可能对CLASSPATH环境变量不陌生,几乎每一本介绍Java入门的图书里都会介绍CLASSPATH环境变量的设置,但对于CLASSPATH环境变量的作用则常常语焉不详。
        实际上,如果使用1.5以上版本的JDK,完全可以不用设置CLASSPATH环境变量——正如上面编译、运行Java程序所见到的:即使不设置CLASSPATH环境变量,完全可以正常编译和运行Java程序。
        那么CLASSPATH环境变量的作用是什么呢?当我们使用java Java类名命令来运行Java程序时,JRE到哪里去搜索Java类呢?可能有读者会回答,在当前路径下搜索啊。这个回答很聪明,但1.4以前版本的JDK都没有设计这个功能,这意味着即使当前路径已经包含了Hello World.class,并在当前路径下执行java Hello World,系统将一样提示找不到Hello World类。
        如果使用1.4以前版本的JDK,则需要在CLASSPATH环境变量中添加一点(.),用以告诉JRE需要在当前路径下搜索Java类。
        除此之外,编译和运行Java程序还需要JDK的lib路径的dt.jar和tools.jar文件里Java类,因此还需要把这两个文件添加到CLASSPATH环境变量里。
       因此,如果使用1.4以前版本的JDK来编译和运行Java程序,常常需要设置CLASSPATH环境变量的值为.;%JAVA_HOME%libdt.jar; %JAVA_HOME%lib ools.jar。
       后来,Sun改进了JDK的设计,JRE会自动搜索当前路径下的类文件,而且使用Java的编译和运行工具时,系统可以自动加载dt.jar和tools.jar文件中的Java类,因此不再需要设置CLASSPATH环境变量。
       注意:如果使用更早以前版本的JDK,通常需要设置CLASSPATH环境变量。
        当然,即使使用JDK1.5以上版本的JDK,也可以设置CLASSPATH环境变量,一旦设置了该环境变量,JRE将会按该环境变量指定的路径来搜索Java类。这意味着如果CLASSPATH环境变量中不包括一点(.),也就是没有包含当前路径,JRE不会在当前路径搜索Java类。
        如果我们想春运行Java程序时临时指定JRE搜索Java类的路径,可以使用-classpath选项,即按如下格式来运行java命令:
        java -classpath dir1;dir2;dir3...;dirN Java
        -classpath选项的值可以是一系列的路径,多个路径之间在Windows平台上以分号(;)隔开,在Linux平台上则以冒号(:)隔开。
        如果我们在运行Java程序时,指定了-classpath选项的值,JRE将严格按-classpath选项所指定的路径来搜索Java类,既不会在当前路径下搜索Java类,CLASSPATH环境变量所指定的搜索路径也不再有效。
        如果我们可以想CLASSPATH环境指定的搜索路径有效,而且还会在当前路径搜索Java类,可以按如下格式来运行Java程序:
        java -classpath %CLASSPATH%;.;dir1;dir2;dir3...;dirN Java
       上面命令通过%CLASSPATH%来引用了CLASSPATH环境变量的值,并在-classpath选项里的值里添加了一点,强制JRE在当前路径搜索Java类。(摘自[疯狂JAVA讲义].李刚)