zoukankan      html  css  js  c++  java
  • Java环境设置、HelloWorld例子、Ant环境及运行(转自MDA之路)

    一段时间不用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>

  • 相关阅读:
    Step by step Dynamics CRM 2013安装
    SQL Server 2012 Managed Service Account
    Step by step SQL Server 2012的安装
    Step by step 活动目录中添加一个子域
    Step by step 如何创建一个新森林
    向活动目录中添加一个子域
    活动目录的信任关系
    RAID 概述
    DNS 正向查找与反向查找
    Microsoft Dynamics CRM 2013 and 2011 Update Rollups and Service Packs
  • 原文地址:https://www.cnblogs.com/Bigkangaroo/p/2288742.html
Copyright © 2011-2022 走看看