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

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

WAS的编译检查是非常严格的,JSP中往往有些是因为将单引号写成了双引号就会编译不过去,如下:

"/>

此时因为default属性在取值的JAVA代码中内部有双引号,且此时用于包含default属性值是采用的双引号,因而WAS在编译的时候就会报错
应该写成:

'/>

这些虽然都是小问题,但是实际操作的过程中,可能还会经常出错。以下引用了一篇网文,该文说明了如何脱离WAS进行预编译JSP,这样我们可以通过预编译的日志查看原来编译不过去的JSP是什么问题(我是因为没有在WAS中找到JSP的预编译日志才尝试了这种方法),这里讲的是整个工程的预编译,实际操作中可以只拷贝编译不过去的JSP到另外的地方,再执行这样的编译,这样就具有针对性。

原文来自:http://yulimin.javaeye.com/blog/412504,经验证该方法可行,此处做相应的解析说明。

tomcat5下,jsp是通过使用tomcat提供的org.apache.jasper.JspC编译工具将JSP 页面的预编译WAS当中是通过 com.ibm.websphere.ant.tasks.JspC  进行预编译。

完整的Ant脚本 build.xml 文件内容,可将该文件置于任何目录中:

GBK"?>    

   

 

    

    

        

        

        

        

        

        

            

        

        

        

        

        

            

        

     

    

    

        

        

        

            

            

          

   

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

com.ibm.ws.webservices.thinclient_6.1.0.jar   

转到build.xml所在目录,执行如下命令,并将结果输出到日志文件中便于查看:

ant jspc >jspc.log

即开始编译,但运行仍会提示:

引用

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

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

直接无视它即可。 

编译成功的话会有: 

1ant jspc

引用

   [wsJspC] _internalCompileApp() returning returnCode: [0] 

   [wsJspC] JSPG0151I: 返回码:

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

2ant jspcEar

引用

[wsJspC] JSPG0186I: 正在保存 D:/IBM/WebSphere/AppServer/temp/DefaultApplication.earextract/DefaultApplication.ear 

[wsJspC] JSPG0187I: 保存已完成。 

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

如果有问题最好是通过如何ANT命令检查:

ant -verbose    

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

BTW:我的测试环境是:Windows XP SP3 + WAS 6.1.0.23 

更多关于wsJspC的信息请参考InfoCenter: 

http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/topic/com.ibm.websphere.base.doc/info/aes/ae/rweb_jspant.html

本文出自:冯立彬的博客




你可能感兴趣的:(J2EE)