忘了从哪里搜到的:
主要介绍
java和
javac命令的使用,分带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