Java 学习 – yasi

http://www.blogjava.net/wxb_nudt/archive/2007/01/16/94268.html

————-java环境设置————-

在环境变量中设置以下三个变量:JAVA_HOME=C:\j2sdk1.4.1 //可以改为相应的目录CLASSPATH=%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jarPATH=%JAVA_HOME%\bin;%PATH%

然后在命令行输入java -version命令,如果出现java version "1.4.1"Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1-b21)Java HotSpot(TM) Client VM (build 1.4.1-b21, mixed mode)则说明已经配置成功!

HelloWorld.java源程序如下:public class HelloWorld{public static void main(String[] args) {System.out.println("Hello World!");}}

在命令行执行javac HelloWorld.java如果没有输出任何信息则说明编译成功。

在命令行运行java HelloWorld,输出:Hello World!代表成功执行了java程序。

—————–初学者常犯的错误—————–

1. 运行时,带了.class后缀如果你试图使用如下命令:E:\java\src>java HelloWorld.class系统会误认为你运行的是HelloWorld包下的名为class的类文件,会到系统的CLASSPATH下(一般都包括当前目录)企图寻找HelloWorld.class.class这样的类,这样的类当然不存在了;并且也不可能存在,因为class是关键字,不能作为一个类的名字。所以会报如下错误信息:Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/class

2. 文件名大小写错误对于像Windows这样的系统,编译时可以不关心大小写。比如编译HelloWorld.java时,也可以使用:E:\java\src>javac helloworld.java也可以编译通过,但产生的类文件仍然是和源文件相符的:HelloWorld.class。但在运行时一定要注意大小写,比如试图使用如下命令运行:E:\java\src>java helloworld将报类似于1中的错误:Exception in thread "main" java.lang.NoClassDefFoundError: helloworld (wrong name: HelloWorld)

—————————-包含包层次的HelloWorld.java—————————-

比如上面的HelloWorld.java修改如下:package org.javaresearch;public class HelloWorld{public static void main(String[] args) {System.out.println("Hello World!");}}

编译时有两种方法

1. 直接编译E:\java\src>javac HelloWorld.java此时在当前目录下输出HelloWorld.class。此时,运行不能使用上面相同的方法,使用:E:\java\src>java HelloWorld运行时,出现如下错误:Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong name: org/javaresearch/HelloWorld)从上述错误信息你也可以看到,系统可以找到HelloWorld类(因为当前路径包含在CLASSPATH中,具体为什么会提示wrong name,有兴趣的朋友参见Java语言规范),但这个类属于org.javaresearch包。所以,你要做的就是按照上述包层次,相应的创建目录层次,把上面生成的HelloWorld.class放到E:\java\src\org\javaresearch\目录下。运行:E:\java\src >java org.javaresearch.HelloWorld系统打印出:Hello World!这儿要注意的是,不能使用java org\javaresearch\HelloWorld来运行,此时同样会出现如下错误:Exception in thread "main" java.lang.NoClassDefFoundError:org\javaresearch\HelloWorld (wrong name: org/javaresearch/HelloWorld)

2. 使用 -d <directory>编译选项是不是觉得上面的编译方法有点麻烦,能不能自动在当前路径(或任意指定的路径)下生成包层次呢?有!使用-d <directory>编译选项就能做到。E:\java\src >javac -d . HelloWorld.java此时,在当前目录下就生成了一个org\javaresearch目录,并且输出的.class文件也在里面。运行:E:\java\src >java org.javaresearch.HelloWorld系统打印:Hello World!如果你想把生成的类文件集中存放在一个目录中,比如:E:\java\classes下,那么你首先创建这个目录,然后编译时:E:\java\src >javac -d E:\java\classes HelloWorld.java就可以把生成的类文件放到E:\java\classes目录下,并且按照包层次相应的创建目录路径。你可以在E:\java\classes\org\javaresearch下找到HelloWorld.class文件。此时使用如下命令可以正确运行(注意如果要用到其它类,请在CLASSPATH中设好):E:\java\classes >java org.javaresearch.HelloWorld

或者你可以在E:\java目录下面运行以下命令来执行E:\java >java -classpath .\classes org.javaresearch.HelloWorld使用java的-classpath参数可以将一些目录加入类路径

——————-打包jar文件——————-可以把一个包内的所有class文件打包为一个jar文件,便于存放和运行。以上文的org.javaresearch包为例,其打包命令如下:E:\java\classes >jar cvf wxb.jar org会生成一个wxb.jar文件,将其中META-INF\MANIFEST.MF文件中添加如下一行:Main-Class: org.javaresearch.HelloWorld保存jar文件。

或者首先创建并编辑一个MANIFEST.MF文件,其内容如下:Manifest-Version: 1.0Created-By: 1.4.1 (Sun Microsystems Inc.)Main-Class: org.javaresearch.HelloWorld将其保存到classes目录中然后将其一起打包到jar文件中,打包命令如下:E:\java\classes >jar cvfm wxb.jar MANIFEST.MF org

————-运行jar文件————-在命令行中输入如下命令即可:E:\java\classes >java -jar wxb.jar输出为:Hello World!

————————用Ant来编译运行java程序————————首先安装Ant,步骤很简单:1.将Ant压缩包解压到一个目录,例如D:\Ant1.5.2;2.在环境变量中添加以下变量:ANT_HOME=D:\Ant1.5.2 //可以改为相应的目录3.修改Path环境变量PATH=%ANT_HOME%\bin;%PATH%

最后给出了一个Ant的build.xml文件,运行ant即可完成所有以上的编译和运行过程,其build文件如下:<project name="HelloWorld" default="jar" basedir="."> <description> building HelloWorld! </description> <!– set global properties for this build –> <property name="src" location="src"/> <property name="build" location="classes"/> <property name="dist" location="dist"/> <property name="user.name" value="Wang Xuebin"/>

<target name="init"> <!– Create the time stamp –> <tstamp/> <!– Create the classes directory structure used by compile –> <mkdir dir="${build}"/> </target>

<target name="build" depends="init" description="build the source code" > <!– Compile the java code from ${src} into ${build} –> <javac srcdir="${src}" destdir="${build}"/> </target>

<target name="jar" depends="build" description="generate the distribution" > <!– Create the distribution directory –> <mkdir dir="${dist}/lib"/>

<!– Put everything in ${build} into the MyProject-${DSTAMP}.jar file –><jar destfile="${dist}/HelloWorld-${DSTAMP}.jar" basedir="${build}"><manifest><attribute name="Built-By" value="${user.name}"/><attribute name="Main-Class" value="org.javaresearch.HelloWorld"/></manifest></jar></target> <target name="run" depends="build" description="run HelloWorld"> <java classpath="${build}" classname="org.javaresearch.HelloWorld"></java> </target>

<target name="runjar" depends="jar" description="run HelloWorld in jar file"> <java jar="${dist}/HelloWorld-${DSTAMP}.jar" fork="true" failonerror="true" maxmemory="128m" > <arg value="-h"/> <classpath> <pathelement location="${dist}/HelloWorld-${DSTAMP}.jar"/> <pathelement path="${java.class.path}"/> </classpath> </java> </target> <target name="clean" description="clean up" > <!– Delete the ${build} and ${dist} directory trees –> <delete dir="${build}"/> <delete dir="${dist}"/> </target></project>

如果心胸不似海,又怎能有海一样的事业。

Java 学习 – yasi

相关文章:

你感兴趣的文章:

标签云: