浏览 2842 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-05-04
最后修改:2009-05-04
因为jdk版本与开发环境windows下的版本不同,因此,采取直接上传java文件并在服务器里编译的方式。 但是,tomcat不像resin有自动编译java功能,于是想到了用ant,试了一晚上,总结出最简单的方法。 本人要实现的是: 1、服务器网站目录为:/var/www/html/hzylxiaolan/ 2、只需要重新编译classes目录中的一个java文件,可自己修改为重新编译所有。 如下: 首先需要到apache的ant网站上下载相关的ant包,并放到系统的web-inf/lib目录中。 本人的网站中有以下的ant文件 ant-1.5.3.jar antlr-2.7.5H3.jar antlr.jar ant-optional-1.5.3.jar 是否还需要其他文件,请下载ant安装后自已试一下 :) 配置一个ant的配置xml文件,如下: 文件名:/var/www/html/hzylxiaolan/jsp/fa_javac.xml ========================================================== <?xml version="1.0"?> <project default="compile" basedir="."> <path id="lib"> //jdk的lib目录,实际使用时去掉本注释 <fileset dir="/opt/jdk1.5.0_07/lib/"><include name="**/*.jar"/></fileset> //网站的lib目录 <fileset dir="/var/www/html/hzylxiaolan/WEB-INF/lib/"><include name="**/*.jar"/></fileset> </path> <target name="compile"> //要重新编译的程序所在的目录,如果为classes,则编译该目录下的所有文件。 //在本例中,仅编译本人指定的一个子目录下的程序 <javac srcdir="/var/www/html/hzylxiaolan/WEB-INF/classes/myclass/djcard" //编译后输出的目录,设置到classes根目录,会自动输出到对应位置 destdir="/var/www/html/hzylxiaolan/WEB-INF/classes/" //引用classes下的其他类 classpath="/var/www/html/hzylxiaolan/WEB-INF/classes/" debug="on" > <classpath refid="lib"/> </javac> </target> </project> ======================================================================================== 再编写一个执行的jsp程序,如下: 文件名:/var/www/html/hzylxiaolan/jsp/fa_javac.jsp ======================================================================================== <%@ page import="java.util.*,java.net.*,java.text.*,java.util.zip.*,java.io.*,org.apache.tools.ant.*"%> <%@ page contentType="text/html;charset=gb2312"%> <% out.println( "编译开始...<BR>" ); //xml描述 String buildFilePath = "/var/www/html/hzylxiaolan/jsp/fa_javac.xml"; //日志输出 String logFilePath = "/var/www/html/hzylxiaolan/jsp/fa_javac.log"; File buildFile = new File(buildFilePath); Project project = new Project(); DefaultLogger consoleLogger = new DefaultLogger(); try { FileOutputStream fs = new FileOutputStream(logFilePath); PrintStream ps = new PrintStream(fs); consoleLogger.setErrorPrintStream(ps); consoleLogger.setOutputPrintStream(ps); } catch (FileNotFoundException e1) { e1.printStackTrace(); } consoleLogger.setMessageOutputLevel(Project.MSG_INFO); project.addBuildListener(consoleLogger); try { project.fireBuildStarted(); project.init(); ProjectHelper helper = ProjectHelper.getProjectHelper(); helper.parse(project, buildFile); out.println("默认target:<BR>"); out.println(project.getDefaultTarget()+"<BR>"); //默认的target是help project.executeTarget("compile"); //调用的任务,对应xml中指明的compile名字 project.fireBuildFinished(null); out.println( "编译成功.<BR>" ); } catch (BuildException e) { project.fireBuildFinished(e); out.println( "编译失败.<BR>" ); } %> ======================================================================================== 运行 fa_javac.jsp程序。 会在页面输出编译结果,对于编译的结果,有两种途径输出,一是输出到fa_javac.log日志文件中,一是直接输出到控制台。 如果错误,可查看日志文件。 如果提示找不到什么 sun....Main什么编译主程序,可将jdk下的lib目录中的tools.jar文件,复制到网站 /WEB-INF/lib 目录中。 QQ: 86804 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |