閱讀184 返回首頁    go 微軟 go windows


脫離ws_ant直接使用Ant調用WebSphere編譯器將jsp編譯成class

https://yulimin.javaeye.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. <?xml version="1.0" encoding="UTF-8"?>   
  2. <project name="WAS JSP PreCompile" default="jspc" basedir=".">   
  3.     <property name="was.home" location="D:/IBM/WebSphere/AppServer"/>   
  4.     <property name="webapp.path" location="D:/IBM/WebSphere/AppServer/installableApps/DefaultApplication/DefaultWebApplication"/>   
  5.     <property name="jspc.path" location="${webapp.path}/jspc"/>   
  6.     <!-- 是否保留生成的.java文件 -->   
  7.     <property name="java.keep" value="true"/>   
  8.     <!-- ;${was.home}/runtimes/com.ibm.ws.webservices.thinclient_6.1.0.jar -->   
  9.     <property name="jsp.classpath" value="${was.home}/lib/bootstrap.jar;${was.home}/lib/startup.jar;${was.home}/lib/j2ee.jar"/>   
  10.     <target name="make-dir">   
  11.         <mkdir dir="${jspc.path}"/>   
  12.     </target>   
  13.     <!-- 定義 WAS JSP 預編譯任務 -->   
  14.     <taskdef name="wsjspc" classpath="${was.home}/plugins/com.ibm.ws.runtime_6.1.0.jar" classname="com.ibm.websphere.ant.tasks.JspC"/>   
  15.     <!-- 調用 WAS JSP 預編譯工具,進行對 JSP 進行編譯 -->   
  16.     <target name="jspc" depends="make-dir">   
  17.         <wsjspc wasHome="${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.     <property name="ear.path" location="D:/IBM/WebSphere/AppServer/installableApps/DefaultApplication.ear"/>   
  20.     <property name="extract.dir" location="${was.home}/temp/DefaultApplication.earextract"/>   
  21.     <!-- 編譯整個EAR -->   
  22.     <target name="jspcEar">   
  23.         <mkdir dir="${extract.dir}"/>   
  24.         <wsjspc wasHome="${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:
https://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/topic/com.ibm.websphere.base.doc/info/aes/ae/rweb_jspant.html

最後更新:2017-04-02 03:42:36

  上一篇:go 學習微軟的技術——MSDN就足夠
  下一篇:go 2009.06.18 20:00天體15號球場連中六個三分,四個NBA三分,要多鍛煉!