脱离ws_ant直接使用Ant调用WebSphere编译器将jsp编译成class

本文介绍如何使用Ant脚本配合IBM WebSphere Application Server (WAS) 的JSPC工具进行JSP预编译,包括配置环境变量、定义任务及编译整个EAR文件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://yulimin.iteye.com/blog/412504

引子:

引用
tomcat5下,jsp是通过使用tomcat提供的org.apache.jasper.JspC编译工具将JSP 页面的预编译



在WAS当中是通过

Java代码 复制代码
  1. com.ibm.websphere.ant.tasks.JspC


完整的Ant脚本 build.xml 文件内容

Java代码 复制代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <projectname="WASJSPPreCompile"default="jspc"basedir=".">
  3. <propertyname="was.home"location="D:/IBM/WebSphere/AppServer"/>
  4. <propertyname="webapp.path"location="D:/IBM/WebSphere/AppServer/installableApps/DefaultApplication/DefaultWebApplication"/>
  5. <propertyname="jspc.path"location="${webapp.path}/jspc"/>
  6. <!--是否保留生成的.java文件-->
  7. <propertyname="java.keep"value="true"/>
  8. <!--;${was.home}/runtimes/com.ibm.ws.webservices.thinclient_6.1.0.jar-->
  9. <propertyname="jsp.classpath"value="${was.home}/lib/bootstrap.jar;${was.home}/lib/startup.jar;${was.home}/lib/j2ee.jar"/>
  10. <targetname="make-dir">
  11. <mkdirdir="${jspc.path}"/>
  12. </target>
  13. <!--定义WASJSP预编译任务-->
  14. <taskdefname="wsjspc"classpath="${was.home}/plugins/com.ibm.ws.runtime_6.1.0.jar"classname="com.ibm.websphere.ant.tasks.JspC"/>
  15. <!--调用WASJSP预编译工具,进行对JSP进行编译-->
  16. <targetname="jspc"depends="make-dir">
  17. <wsjspcwasHome="${was.home}"src="${webapp.path}"toDir="${jspc.path}"forcecompilation="true"verbose="true"deprecation="false"loglevel="CONFIG"keepgenerated="${java.keep}"classpath="${jsp.classpath}"/>
  18. </target>
  19. <propertyname="ear.path"location="D:/IBM/WebSphere/AppServer/installableApps/DefaultApplication.ear"/>
  20. <propertyname="extract.dir"location="${was.home}/temp/DefaultApplication.earextract"/>
  21. <!--编译整个EAR-->
  22. <targetname="jspcEar">
  23. <mkdirdir="${extract.dir}"/>
  24. <wsjspcwasHome="${was.home}"earpath="${ear.path}"forcecompilation="true"extractToDir="${extract.dir}"useThreadTagPool="true"keepgenerated="${java.keep}"jspCompileClasspath=""classpath="${jsp.classpath}"loglevel="CONFIG"/>
  25. </target>
  26. </project>

注意:就是多了一个包就会编译不出来,汗。。。看我注释掉的那个jar包:

Java代码 复制代码
  1. com.ibm.ws.webservices.thinclient_6.1.0.jar

运行仍会提示:

引用
无法语法分析 setupCmdLinE: null\bin\setupCmdLine.bat (系统找不到指定的路径。)
无法语法分析 setupCmdLinE: null\bin\setupCmdLine.bat (系统找不到指定的路径。)


直接无视它即可。

编译成功的话会有:
1、ant jspc

引用

[wsJspC] _internalCompileApp() returning returnCode: [0]
[wsJspC] JSPG0151I: 返回码:0

[wsJspC] JSPG0168I: 批处理编译器成功退出并且没有错误。



2、ant jspcEar

引用
[wsJspC] JSPG0186I: 正在保存 D:\IBM\WebSphere\AppServer\temp\DefaultApplication.earextract\DefaultApplication.ear
[wsJspC] JSPG0187I: 保存已完成。
[wsJspC] JSPG0168I: 批处理编译器成功退出并且没有错误。



如果有问题最好是通过

Java代码 复制代码
  1. ant-verbose


来查看详细的错误再进行对应的分析即可。

BTW:我的测试环境是:Windows XP SP3 + WAS 6.1.0.23
并直接编译 DefaultApplication.ear 解开的jsp与整个ear包成功。

更多关于wsJspC的信息请参考InfoCenter:
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/topic/com.ibm.websphere.base.doc/info/aes/ae/rweb_jspant.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值