Linux下对java code进行编译

来源:互联网 发布:安卓手机网游源码 编辑:程序博客网 时间:2024/05/16 20:28
 忘了从哪里搜到的:

主要介绍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

原创粉丝点击