zoukankan      html  css  js  c++  java
  • JAVA的helloworld 分类: JAVA 2013-07-22 16:29 395人阅读 评论(0) 收藏

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

    在环境变量中设置以下三个变量:
    JAVA_HOME=C:j2sdk1.4.1 //可以改为相应的目录
    CLASSPATH=%JAVA_HOME%lib ools.jar;%JAVA_HOME%libdt.jar
    PATH=%JAVA_HOME%in;%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:javasrc>java HelloWorld.class
    系统会误认为你运行的是HelloWorld包下的名为class的类文件,会到系统的CLASSPATH下(一般都包括当前目录)企图寻找 HelloWorld.class.class这样的类,这样的类当然不存在了;并且也不可能存在,因为class是关键字,不能作为一个类的名字。所以会报如下错误信息:
    Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/class

    2. 文件名大小写错误
    对于像Windows这样的系统,编译时可以不关心大小写。比如编译HelloWorld.java时,也可以使用:
    E:javasrc>javac helloworld.java
    也可以编译通过,但产生的类文件仍然是和源文件相符的:HelloWorld.class。
    但在运行时一定要注意大小写,比如试图使用如下命令运行:
    E:javasrc>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:javasrc>javac HelloWorld.java
    此时在当前目录下输出HelloWorld.class。此时,运行不能使用上面相同的方法,使用:
    E:javasrc>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:javasrcorgjavaresearch目录下。运行:
    E:javasrc >java org.javaresearch.HelloWorld
    系统打印出:
    Hello World!
    这儿要注意的是,不能使用java orgjavaresearchHelloWorld来运行,此时同样会出现如下错误:
    Exception in thread "main" java.lang.NoClassDefFoundError:orgjavaresearchHelloWorld (wrong name: org/javaresearch/HelloWorld)

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

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

    -------------------
    打包jar文件
    -------------------
    可以把一个包内的所有class文件打包为一个jar文件,便于存放和运行。以上文的org.javaresearch包为例,其打包命令如下:
    E:javaclasses >jar cvf wxb.jar org
    会生成一个wxb.jar文件,将其中META-INFMANIFEST.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:javaclasses >jar cvfm wxb.jar MANIFEST.MF org

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

    -------------
    jar,war,ear区别

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

    这三种文件都可以看作是java的压缩格式,其实质是实现了不同的封装:

    jar--封装类
    war--封装web站点
    ear--封装ejb。
    它们的关系具体为:
    jar:      是java Achieve--按java格式压缩的类包,包含内容 class、properties文件,    是文件封装的最小单元 级别:小
    war:     是file web Achieve--包含Servlet、JSP页面、JSP标记库、JAR库文件HTML/XML文档和其他公用资源文件,如图片、音频文件等 级别:中
    ear:    是 file Enterprise Achieve--除了包含JAR、WAR以外,还包括EJB组件   部署文件 application-client.xml web.xml application.xml    级别:大

     

    完!

    感谢,Thanks!

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    joda-time的使用
    logger 的使用一 小结
    svn 技巧
    mysql 获取一段时间的数据
    Drools5
    Java各种Utils小结
    Java 8 新特新 工具类 ZonedDateTime
    集合工具类CollectionUtils、ListUtils、SetUtils、MapUtils的使用
    sonar 的使用
    MySQL入门教学(看完必懂,图文详解!)
  • 原文地址:https://www.cnblogs.com/mao0504/p/4706936.html
Copyright © 2011-2022 走看看