如何用javac和java编译运行整个java工程

王培 王培     2022-09-06     202

关键词:

转自:http://blog.csdn.net/huagong_adu/article/details/6929817

     前言:本文教你怎么用javac和Java命令,以及如何利用脚本(shell或bat)方便处理,并用简单的实例展示这些用法。

        IDE是把双刃剑,它可以什么都帮你做了,你只要敲几行代码,点几下鼠标,程序就跑起来了,用起来相当方便。你不用去关心它后面做了些什么,执行了哪些命令,基于什么原理。然而也是这种过分的依赖往往让人散失了最基本的技能,当到了一个没有IDE的地方,你便觉得无从下手,给你个代码都不知道怎么去跑。好比给你瓶水,你不知道怎么打开去喝,然后活活给渴死。
        之前用惯了Myeclipse,Java文件编译运行的命令基本忘得一干二净。现在项目出了原型,放到服务器上去测试,SSH一登陆上服务器就傻眼了,都是命令行,以前程序图标什么的都成了浮云,程序放上去了不知道怎么去编译运行,只能补补课了,下面做下补课笔记。
一、javac命令
        
javac 用于编译Java文件,格式为:
        java [options]  [sourcefiles] [@files]
        其中:
        options:命令行选项;
        sourcefiles:一个或多个要编译的源文件;
        @files:一个或多个对源文件进行列表的文件,有时候要编译的文件很多,一个个敲命令会显得很长,也不方便修改,可以把要编译的源文件列在文件中,在文件名前加@,这样就可以对多个文件进行编译,对编译一个工程很有用,方便,省事。
        有几个比较重要的选项:
        -d 用于指定编译成的class文件的存放位置,缺省情况下不指定class文件的存放目录,编译的class文件将和源文件在同一目录下;
        -classpath 可以简写成-cp,用于搜索编译所需的class文件,指出编译所用到的class文件的位置,如jar、zip或者其他包含class文件的目录,指定该选项会覆盖CLASSPATH的设定;
        -sourcepath用于搜索编译所需的源文件(即java文件),指定要搜索的源文件的位置,如jar、zip或其他包含java文件的目录;
        需要注意windows下和linux下文件路径分隔符和文件列表(即-classpath和-sourcepath指定的文件)分隔符的区别:
        windows下文件路径分隔符用 ,文件列表分隔符用分号 ;
        linux下文件路径分隔符用 / ,文件列表分隔符用冒号 :
二、java命令
        
java 用于执行程序,格式如下:
        java [options] classfile
        options:命令行选项,一般用于 -classpath 指定要执行的文件所在的位置以及需要用到的类路径,包括jar、zip和class文件目录,会覆盖CLASSPATH的设定
三、脚本
        
如果要敲的命令很长,每次要编译运行的时候都要重新敲一遍,这是一件很痛苦的事情,所以用脚本可以大大方便你的工作量。在linux下用shell脚本,windows下用bat批处理程序。因为是在linux下,我这里只是简单介绍一下shell,关于bat批处理程序的语法自己百度一下,不难。
1. 开头
        linux有很多不同的shell,通常使用bash(bourne again shell),程序必须以下面的行开始:
        #!/bin/sh
        #!用来告诉系统用后面的参数来执行程序,这里使用的是/bin/sh
        要使你的脚本能够执行,还必须让这个文件有可执行权限,使用下面命令更改文件权限:
        chmod +x filename
2. 注释
        以#开始的句子表示注释,一直到这行结束,多写注释有利于以后重新看的时候知道自己在做什么
3. 变量
        shell的脚本的变量都是字符串,不用申明类型,定义的时候直接  变量=值  即可,用到变量的的时候用 $变量 或者 ${变量},echo命令用于打印,举个例子:

[python] view plain copy
  1. #!/bin/sh  
  2. # 定义变量words,值为hello world  
  3. words="hello world"  
  4. # 打印变量words的值  
  5. echo $words  

4. 命令
        shell脚本里面可以直接任意使用linux命令,要用到什么命令直接敲进去即可。记住一些常用的命令:
        cd                   打开目录
        ls -l                 显示目录信息
        rm -fr              递归删除目录及下面的文件,不提示信息
        mkdir              创建目录
        pwd                显示当前路径
        kill -9 pid        强制杀掉某个进程号的进程
        pkill                杀掉某个名字的进程
        ps aux            显示运行进程信息
        netstat -pan 查看网络端口监听情况
四、例子

        下面是文件compile,用于编译整个java工程,把编译的文件放到指定目录下:

 

[python] view plain copy
  1. #!/bin/sh  
  2. # Define some constants  
  3. ONSSERVER=ONSServer  
  4. PROJECT_PATH=/root/iot-oid  
  5. JAR_PATH=$PROJECT_PATH/lib  
  6. BIN_PATH=$PROJECT_PATH/bin  
  7. SRC_PATH=$PROJECT_PATH/src/$ONSSERVER  
  8.   
  9. # First remove the sources.list file if it exists and then create the sources file of the project  
  10. rm -f $SRC_PATH/sources  
  11. find $SRC_PATH/com -name *.java > $SRC_PATH/sources.list  
  12.   
  13. # First remove the ONSServer directory if it exists and then create the bin directory of ONSServer  
  14. rm -rf $BIN_PATH/$ONSSERVER  
  15. mkdir $BIN_PATH/$ONSSERVER  
  16.   
  17. # Compile the project  
  18. javac -d $BIN_PATH/$ONSSERVER -classpath $JAR_PATH/jdom.jar:$JAR_PATH/oro-2.0.8.jar @$SRC_PATH/sources.list  

        下面是文件run,用于执行程序:

[python] view plain copy
  1. #!/bin/sh  
  2.   
  3. # Define some constants  
  4. ONSSERVER=ONSServer  
  5. PROJECT_PATH=/root/iot-oid  
  6. JAR_PATH=$PROJECT_PATH/lib  
  7. BIN_PATH=$PROJECT_PATH/bin  
  8.   
  9. # Run the project as a background process  
  10. nohup java -classpath $BIN_PATH:$JAR_PATH/jdom.jar:$JAR_PATH/oro-2.0.8.jar com.ONSServer.DoUDPRequest &  

        以上是对javac、java和shell脚本的简单总结,用的比较简单,如有错误,欢迎指正!
        个人原创,脑力产品,实属不易,欢迎转载,转载请注明出处!

参考文献:
        javac和java命令:
http://jeffchen.iteye.com/blog/395671
http://www.blogjava.net/pdw2009/archive/2008/06/12/207413.html?opt=admin
        shell编程:
http://bbs.chinaunix.net/thread-391751-1-1.html
http://hi.baidu.com/zccamy/blog/item/b5220f94517de10e7bf48057.html

如何用javac和java编译运行整个java工程

1、将编译好的比如Demo.java文件放到某个盘下(比如D盘)2、进入控制台(window+R键---->输入cmd)3、键入命令D: 回车4、进入D盘之后键入命令:javacDemo.java(要保证你的jdk是安装好的)5、如果没报错,即编译完成,可执行,键入... 查看详情

如何用java启动windows命令行程序

先请编译和运行下面程序:importjava.util.*;importjava.io.*;publicclassBadExecJavac2publicstaticvoidmain(Stringargs[])tryRuntimert=Runtime.getRuntime();Processproc=rt.exec("javac");intexitVal=proc.waitFor();System.out.println("ProcessexitValue:"+exitVal);catch(Throwablet)t.printStackTrace(... 查看详情

如何用java程式在控制台输出"我是一个java程式"?

参考技术A如何用JAVA程式在控制台输出"我是一个JAVA程式"?通过System.out.println的方式输出到控制台定义A.java档案,并输出字串我是一个java程式publicclassApublicstaticvoidmain(String[]args)定义main方法System.out.println("我是一个JAVA程... 查看详情

java中运行不了.class文件

...步:直接输入盘符即可完成路径切换(如D:)。参考技术A编译时用的javac的版本和运行时java的版本不一致造成的.编译时用:"javac-versionhello.java",显示一下编译器javac.exe的版本.运行:"java-version",显示一下虚拟机java.exe... 查看详情

windows下用命令行编译并运行java工程,怎样编译引用的多个jar包和配置文件.xml呢?

...数指明了你要用到的jar包,可以用分号分隔.java就是你要编译的java文件,可以用通配符。 查看详情

java如何运行,从哪运行?

...装好配置环境变量后,系统就承认了java,javac等命令,当编译好java文件,就可以在开始——运行——cmd的dos系统下运用指定命令运行java文件。JDK是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。JDK包含的基本组... 查看详情

如何用javac命令编译一个目录以及子目录下所有的java文件呢?

D:\workflow是我放java文件的目录里面有很多好几层子目录子目录里放着很多java文件我如何把他们一起同时编译呢?不想一个一个写文件名,就应该想到如何生成命令行。人类进化的动力就是想吃饱又想偷懒。:: WindowsD:\\Workfl... 查看详情

java源代码怎么运行

...序.java文件的话,非项目那种单篇幅的源代码需要先进行编译,生成.class文件可以在命令控制台下用java文件名进行运行,编译java文件需要javac.exe程序应该是jdk中的工具,所以你需要下载jdk并配置环境变量,然后在控制台运行javac... 查看详情

请详细写出javac和java两个命令的使用方式

javaac和java两个命令的使用详解:一、javac命令javac用于编译Java文件,格式为:java[options][sourcefiles][@files]其中:options:命令行选项;sourcefiles:一个或多个要编译的源文件;@files:一个或多个对源文件进行列表的文件,有时候要... 查看详情

在做java开发时,build和compile有啥联系和区别?谢谢。

...什么联系和区别?谢谢。build会构建整个工程,compile只会编译工程,build包含compile,是将源码解释后形成可执行文件。命令行下的javac就是compilejava则是build。在实际开发的时候这两个没太大区别,只有部署的时候才会用到build。... 查看详情

java手动带包编译与运行

Java手动带包编译与运行1.编辑好一个Java代码2.在保存的路径下编译用javac-d.test2.java运行前面是固定的后面是类名注意d.后面有空格不然会报错javac:找不到目录在dos窗口运行整个命令d的后面要加空格再加点不然会报javac:无效的标记... 查看详情

如何在ultraedit中编译和运行java程序

...具配置”。2点击“插入”,在“菜单项”名称上输入“编译java程序”,在“命令行”里输入“javac%n%e”,在工作目录上填“%p”。3切换到“输出”项,选择“输出到列表框”和“捕获输出”,点击“应用”。4同样,也可以定义... 查看详情

eclipse使用步骤,javac和java指令的区别

javac指令和java指令:javac负责将源文件编译成字节码文件(.class),编译时要指明.java后缀,不能省略java指令负责将字节码文件转为机器码,对其进行运行,java指令后的字节码文件省略.class后缀直接操作javac对源文件进行编译的弊端:每对... 查看详情

javac如何编译.java,.jar

我用javac编译java文件,它提示软件包不存在,即我的jar包;我的.java和.jar在同一目录,比如D:\code>,请问如何编译能找到软件包,编译出.class.jar是用的Apache的包,和环境变量没有关系,我的tomcat,ejb都跑的呼呼的,就是想知... 查看详情

java编译和运行class

编译WIN: javac-encodingUTF-8-Djava.ext.dirs=$JAVA_HOME/jre/lib/ext;/app/lib-d. ./Hdfstest.javalinux: javac-encodingUTF-8-Djava.ext.dirs=$JAVA_HOME/jre/lib/ext:/app/lib-d. ./Hdfstest. 查看详情

如何用eclipse建立一个java应用程序

1、用Eclipse建立一个Java应用程序首先需要创建一个Java工程,在工程里添加一个类,接着在此类中编写代码即可完成一个Java应用程序的建立了;2、使用的工具是Eclipse;3、步骤如下:(1)、打开Eclipse,点击New菜单,新建一个JavaP... 查看详情

如何为javac设置path变量,以便我可以手动编译我的.java工作?

这是我的驱动器上的地址:C:ProgramFilesJavajdk1.6.0_18in我将如何设置路径变量,以便我可以进入命令窗口(windowskey+r“cmd”)并能够键入以下内容:javacTestApp.java我正在使用Windows7专业版。答案每次启动它时,将SETPATH命令键入命令... 查看详情

editplus配置添加java和javac,达到运行java效果。

首先,找到工具tools=>ConfigureUserTools点击AddTool,分别添加两个编译javac和运行java的路径。配置完成后,我们就可以在工具中直接使用了。 查看详情