一个JSP编译错误的解决:JAVAC MESSAGE FILE IS BROKEN: key=javac.err.branch.too.big

日志中提示如下错误:
[06-5-17 9:09:40:391 CST] 1a9f74ca WebGroup      E SRVE0026E: [Servlet 错误]-[无法编译 JSP 类
D:/IBM/WebSphere/AppServer/temp/zxsjk7/server1/ai_war/ai.war/home/_main.java:14: JAVAC MESSAGE FILE IS BROKEN: key=javac.err.branch.too.big, arguments=null, null, null
public class _main extends com.ibm.ws.webcontainer.jsp.runtime.HttpJspBase {
             ^
1 个错误
]:org.apache.jasper.JasperException: 无法编译 JSP 类
D:/IBM/WebSphere/AppServer/temp/zxsjk7/server1/ai_war/ai.war/home/_main.java:14: JAVAC MESSAGE FILE IS BROKEN: key=javac.err.branch.too.big, arguments=null, null, null
public class _main extends com.ibm.ws.webcontainer.jsp.runtime.HttpJspBase {
             ^
1 个错误

    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:369)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:129)
    at com.ibm.ws.webcontainer.jsp.servlet.JspServlet.compile(JspServlet.java:1003)
    at com.ibm.ws.webcontainer.jsp.servlet.JspServlet.loadJSP(JspServlet.java:925)
    at com.ibm.ws.webcontainer.jsp.servlet.JspServlet$JspServletWrapper.loadIfNecessary(JspServlet.java:287)
    at com.ibm.ws.webcontainer.jsp.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:317)
    at com.ibm.ws.webcontainer.jsp.servlet.JspServlet.serviceJspFile(JspServlet.java:700)
    at com.ibm.ws.webcontainer.jsp.servlet.JspServlet.service(JspServlet.java:798)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code))
    at com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java(Compiled Code))
    at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java(Compiled Code))
    at com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycleServlet.java(Compiled Code))
    at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java(Inlined Compiled Code))
    at com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java(Compiled Code))
    at com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java(Compiled Code))
    at com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java(Inlined Compiled Code))
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java(Compiled Code))
    at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java(Compiled Code))
    at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java(Compiled Code))
    at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java(Compiled Code))
    at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java(Compiled Code))
    at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java(Compiled Code))
    at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java(Compiled Code))
    at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java(Compiled Code))
    at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java(Compiled Code))
    at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java(Compiled Code))
    at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java(Compiled Code))
    at com.ibm.ws.http.HttpConnection.run(HttpConnection.java(Compiled Code))
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))
解决方法及相关信息如下:(原文URL:http://www-1.ibm.com/support/docview.wss?rs=180&context=SSEQTP&q1=1170472&uid=swg21170472&loc=en_US&cs=utf-8&lang=en+en)

Technote (FAQ)
 
Problem
A JavaServer Pages™ (JSP™) page compilation may fail with the error message "JAVAC MESSAGE FILE IS BROKEN: key=javac.err.branch.too.big" or "code too large for try statement". 
 
Cause 
There is a limitation of 65536 bytes (64K) on the amount of code per non-native, non-abstract method in Java® SDK classes. If a JSP page is translated into a Java class in which this limit is exceeded, the Java compiler will issue a "JAVAC MESSAGE FILE IS BROKEN: key=javac.err.branch.too.big" or "code too large for try statement" message, and the JSP compilation will fail. The JVM method size limit of 64K cannot be increased.

Refer to the "4.10 Limitations of Java Virtual Machines" section in http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html

 
 
Solution
Browser-based compilation on WebSphere Application Server V4.0 and V5.0 releases

Set the JVM™ system property com.sun.tools.javac.main.largebranch to true. After setting this property to true, restart the server and request the JSP. If this compilation error persists after correctly setting this property, restarting the server and requesting the JSP, see Best practices for reducing the size of the service method in generated JSP class files

To change the system property in WebSphere Application Server V4.0 releases:
Go to the administrative console.
Select WebSphere Administrative Domain > Nodes > your_node_name > Application Servers > your_application_server
On the right, click JVM Settings.
Under System Properties, click Add.
Under name specify com.sun.tools.javac.main.largebranch without quotes and under value specify true without quotes.
Click Apply.
Restart the Application Server to pickup the changes.

To change the system property in WebSphere Application Server V5.0 releases:
In the administrative console, expand Servers, then click Application Servers.
Select the Application Server.
In the Additional Properties section, click Process Definition.
Click Java Virtual Machine.
Click Custom Properties.
Click New.
Under name specify com.sun.tools.javac.main.largebranch without quotes and under value specify true without quotes.
Click Apply.
At the top of the administrative console, click Save to save your changes.
Stop and restart the Application Server.


Browser-based compilation on WebSphere Application Server V5.1 releases

There is no further optimization that can be done in the Application Server. See Best practices for reducing the size of the service method in generated JSP class files

Batch compilation in WebSphere Application Server V4.0, V5.0 and V5.1 releases

By default, the WebSphere Application Server JSP Batch Compiler is fully optimized. If this compilation error is encountered when using the JSP Batch Compiler, see Best practices for reducing the size of the service method in generated JSP class files 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值