分享

JAVA的helloworld.java程序在cmd javac命令下执行//window...

 昵称38519320 2017-10-14
-------------
java环境设置
-------------
打开环境变量,在我的电脑上右键属性,进入高级选项卡,下面就有环境变量的选项卡
在环境变量中设置以下三个变量:
JAVA_HOME=C:\j2sdk1.4.1 //可以改为相应的目录
在classpath中添加  .;%JAVA_HOME%\lib\rt.jar;%JAVA_HOME%\lib\tools.jar;C:\Program Files\Java\jre6\lib\ext\QTJava.zip  注意前面有个点,一定要加上,如果没有classpath这个变量,就新建一个。
在PATH中添加%SDK_HOME%\tools;%JAVA_HOME%\bin;
然后在命令行输入java -version命令,如果出现

Java(TM) 2 Runtime Environment, Standard Edition (版本号)
Java HotSpot(TM) Client VM (版本号, 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。
在linux系统下,必须注意大小写。
但在运行时一定要注意大小写,比如试图使用如下命令运行:
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   最后的org是package的根目录,生成的jar包放在package的根目录的上一层目录下才行
会生成一个wxb.jar文件,将其中META-INF\MANIFEST.MF文件中添加如下一行:(用winrar就可以打开jar文件,修改后保存就可以)
Main-Class: org.javaresearch.HelloWorld
保存jar文件。
或者首先创建并编辑一个MANIFEST.MF文件,其内容如下:
Manifest-Version: 1.0
Created-By: 版本号 (Sun Microsystems Inc.)
Main-Class: org.javaresearch.HelloWorld
将其保存到classes目录中
然后将其一起打包到jar文件中,打包命令如下:
E:\java\classes >jar cvfm wxb.jar MANIFEST.MF org  //这个目前我没有做到,jar -m的命令是将现有的清单文件加到jar包中。
-------------
运行jar文件
-------------
在命令行中输入如下命令即可:
E:\java\classes >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    级别:大

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多