隨筆 - 20  文章 - 12  trackbacks - 0
          <2007年1月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          常用鏈接

          留言簿(1)

          隨筆檔案(20)

          java論壇

          我的朋友

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 15137
          • 排名 - 2000

          最新評論

          閱讀排行榜

          評論排行榜

          一段時間不用Java,經常忘記一些煩瑣的設置,特意寫此文檔備案。

          -------------
          java環境設置
          -------------

          在環境變量中設置以下三個變量:
          JAVA_HOME=C:\j2sdk1.4.1 //可以改為相應的目錄
          CLASSPATH=%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar
          PATH=%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.0
          Created-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>

          posted on 2007-01-17 12:56 閱讀(618) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 开化县| 周宁县| 天等县| 昭通市| 晋中市| 安丘市| 平武县| 南宁市| 内丘县| 界首市| 南雄市| 伊春市| 金堂县| 久治县| 丰台区| 建始县| 平安县| 喀喇沁旗| 郎溪县| 宁陵县| 华安县| 建始县| 鄂托克前旗| 灵武市| 大关县| 林甸县| 通化县| 昭苏县| 静宁县| 长宁县| 临海市| 焉耆| 蒙山县| 界首市| 潢川县| 白玉县| 杂多县| 黄大仙区| 黎川县| 平南县| 宜都市|