忘了从哪里搜到的:

主要介绍 javajavac命令的使用,分带package和不带package,如果要用到第3方包,则使用-classpath参数
1.不带package

Hello.java
 public class Hello
 {
 public static void main(String[] args){
 System.out.println("hello");
 }
 }
 c:/java/hello/Hello.java
 编译
 c:/java/hello>javac Hello.java
 生成class文件
 c:/java/hello/Hello.class
 运行
 c:/java/hello>java Hello
 2.带package的情况 源文件应按包目录放好,这绝对是个好习惯
 Hello.java
 package my;//注意该句
 public class Hello
 {
 public static void main(String[] args){
 System.out.println("hello");
 }
 }
 c:/java/hello/my/Hello.java
 编译
 c:/java/hello/my>javac Hello.java
 生成class文件
 c:/java/hello/my/Hello.class
 运行
 c:/java/hello>java my.Hello
 3.-classpath参数的使用
javac -classpath .;jar01.jar;jar02.jar;……;jarN.jar   class_name.java
 java -classpath .;jar01.jar;jar02.jar;……;jarN.jar   main_class_name

已经学会如何在Windows下如何编辑,编译和执行Java程序了,我就想试试如何在Linux下编译和执行Linux

    昨天下载了一个for Linux 的Eclipse,使用起来和在Windows下没有什么区别,但是速度慢了些,于是今

天我想尝试一下如何在控制台下使用命令编译和执行Java程序。

    首先,去Sun的网站上Download一个JDK,我下载的版本是 jdk1.5.0_08,安装。
接着,在root下编写了一个简单的Java程序 first.java

public class first{
 public static void main(String args[]){
 System.out.println("This is my first program.");
 }
 }



在/usr/java/jdk1.5.0_08/bin下进行如下操作:
编译 ./javac /root/first.java 没有错误;
执行 ./java /root/first 有错误“Exception in thread "main" java.lang.NoClassDefFoundError”

,我以为是没有设置环境变量的缘故。
下一步,设置环境变量。从网上找了一个如何设置环境变量的方法,按照自己的情况设置了一番,设置方

法如下:

[root@localhost bin]# export  JAVA_HOME=/usr/java/jdk1.5.0_08
 [root@localhost bin]# export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/ 
 tools.jar 
 [root@localhost bin]# export PATH=$PATH:$JAVA_HOME/bin 
 设置好了之后,对原程序进行重新编译和执行
 编译 javac /root/first.java 成功
 执行 java /root/first 仍然出现错误 “Exception in thread "main"

java.lang.NoClassDefFoundError”
我很纳闷,不知道问题出在哪里,java 这个命令已经可以使用,那应该是使用方法的错误。回到放置程序

的root下,再一次执行 java first,这时没有错误,屏幕上显示“This is my first program.”这时我才想

起在Windows的DOS环境下执行java这个命令时必须在存放文件的根目录下,在Linux下也应该这样吧!不管怎么

说,现在我已经可以在Linux下不借助Eclipse这样的工具对Java程序进行编译和执行了,今天晚上也算是小有

收获吧!

做一下总结:我觉得在Linux下安装JDK和在Windows下并没有什么区别,只是在设置环境变量的时候有点不

同,Windows的操作稍微简单一些,只需按几下按钮,复制粘贴一下就行;在Linux下则需要敲入挺多的字符才

行,但也是不是很难的,只要在使用中注意一些小的细节,不犯粗心大意的错误,很容易就可以在Linux下编写

,编译和执行Java程序了,而且在Linux下编写,编译和执行Java程序同样很方便,简单。

 

自我实践:

$ ls
 Test.java       axis-1.4.jar    jaxrpc-1.0.jar
 $ javac -classpath .:axis-1.4.jar:jaxrpc-1.0.jar Test.java
 $ pwd
 /BOMC/user
 $ ls
 Test.class      Test.java       axis-1.4.jar    jaxrpc-1.0.jar
 $ cd ..
 $ pwd
 /BOMC
 $ java -classpath .:user/axis-1.4.jar:user/jaxrpc-1.0.jar user.Test
 ==================
 Exception in thread "main"  java.lang.NoClassDefFoundError: org.apache.commons.logging.LogFactory
 at org.apache.axis.components.logger.LogFactory.class$(LogFactory.java:45)
 at org.apache.axis.components.logger.LogFactory$1.run(LogFactory.java:45)
 at java.security.AccessController.doPrivileged(AccessController.java:197)
 at org.apache.axis.components.logger.LogFactory.getLogFactory(LogFactory.java:41)
 at org.apache.axis.components.logger.LogFactory.<clinit>(LogFactory.java:33)
 at java.lang.J9VMInternals.initializeImpl(Native Method)
 at java.lang.J9VMInternals.initialize(J9VMInternals.java:194)
 at org.apache.axis.handlers.BasicHandler.<clinit>(BasicHandler.java:43)
 at java.lang.J9VMInternals.initializeImpl(Native Method)
 at java.lang.J9VMInternals.initialize(J9VMInternals.java:194)
 at java.lang.J9VMInternals.initialize(J9VMInternals.java:159)
 at java.lang.J9VMInternals.initialize(J9VMInternals.java:159)
 at org.apache.axis.client.Service.getAxisClient(Service.java:104)
 at org.apache.axis.client.Service.<init>(Service.java:113)
 at user.Test.main(Test.java:17)
 $ vi user/Test.java
 "user/Test.java" 40 lines, 959 characters 
 package user;
 import java.rmi.RemoteException;^M
 ^M
 import javax.xml.rpc.ServiceException;^M
 ^M
 import org.apache.axis.client.Call;^M
 import org.apache.axis.client.Service;^M
 ^M
 public class Test {^M
 ^M
 /**^M
 * @param args^M
 */^M
 public static void main(String[] args) {^M
 System.out.println("==================");^M
 String endpoint = "http://axis/service/Service.jws?wsdl";
 Service service = new Service();^M
 Call call;^M
 try {^M
 call = (Call)service.createCall();^M
 call.setTargetEndpointAddress(endpoint);^M
 call.setOperationName("getConfigureItemRelationByOid");^M
 ^M
 String counter = (String) call.invoke(new Object[]{3155L});^M
 System.out.println(counter);^M
 ^M
 ^M
 } catch (ServiceException e) {^M
 // TODO Auto-generated catch block^M
 e.printStackTrace();^M
 } catch (RemoteException e) {^M
 // TODO Auto-generated catch block^M
 e.printStackTrace();^M
 }^M
 ^M
 ^M
 ^M
 }^M
 ^M
 }^M
 :q