'이클립스 resin 플러그인'에 해당되는 글 1건

  1. 2009.10.05 JSP 구동시 java.lang.VerifyError 발생
Resin을 콘솔에서 실행시켜서 사용할때는 같은 문제를 본적이 없었지만,
이클립싀 플러그인으로 이클립스 내에서 구동할 경우 다음과 같은 에러를 출력한다.
[13:56:32.858] java.lang.VerifyError: (class: _jsp/_index__jsp, method: _jspService signature: (Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V) Incompatible argument to function
[13:56:32.858] at java.lang.Class.getDeclaredConstructors0(Native Method)
[13:56:32.858] at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
[13:56:32.858] at java.lang.Class.getConstructor0(Unknown Source)
[13:56:32.858] at java.lang.Class.newInstance0(Unknown Source)
[13:56:32.858] at java.lang.Class.newInstance(Unknown Source)
[13:56:32.858] at com.caucho.jsp.JspManager.preload(JspManager.java:302)
[13:56:32.858] at com.caucho.jsp.JspManager.compile(JspManager.java:210)
[13:56:32.858] at com.caucho.jsp.JspManager.createPage(JspManager.java:177)
[13:56:32.858] at com.caucho.jsp.JspManager.createPage(JspManager.java:157)
[13:56:32.858] at com.caucho.jsp.PageManager.getPage(PageManager.java:248)
[13:56:32.858] at com.caucho.jsp.PageManager.getPage(PageManager.java:166)
[13:56:32.858] at com.caucho.jsp.QServlet.getSubPage(QServlet.java:292)
[13:56:32.858] at com.caucho.jsp.QServlet.getPage(QServlet.java:210)
[13:56:32.858] at com.caucho.server.dispatch.PageFilterChain.compilePage(PageFilterChain.java:206)
[13:56:32.858] at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:133)
[13:56:32.858] at com.vine.service.chance.server.EE.DateFilter.doFilter(DateFilter.java:88)
[13:56:32.858] at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
[13:56:32.858] at com.vine.service.chance.server.EE.CustomerFilter.doFilter(CustomerFilter.java:106)
[13:56:32.858] at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
[13:56:32.858] at com.vine.service.chance.server.EE.WapObjectFilter.doFilter(WapObjectFilter.java:53)
[13:56:32.858] at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
[13:56:32.858] at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:173)
[13:56:32.858] at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
[13:56:32.858] at com.caucho.server.hmux.HmuxRequest.handleRequest(HmuxRequest.java:420)
[13:56:32.858] at com.caucho.server.port.TcpConnection.run(TcpConnection.java:514)
[13:56:32.858] at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:520)
[13:56:32.858] at com.caucho.util.ThreadPool.run(ThreadPool.java:442)
[13:56:32.858] at java.lang.Thread.run(Unknown Source)
정상적으로 서비스 되던 소스이기 때문에 소스문제는 아니고.
work 디렉토리의 컴파일된 jsp 소스를 모두 지워보기로 했다. 
/WEB-INF/work 의 .java 파일을 모두 삭제한후 다시 페이지를 열었을때는 해당오류는 발생하지 않았다.
하지만 tag 파일과 tld 파일의 로딩에서 다시 
[14:42:49.718] com.caucho.config.LineConfigException: file:/D:/wwwroot/WEB-INF/tld/header.tld:18: java.lang.NoSuchMethodError: javax.servlet.jsp.tagext.TagAttributeInfo.<init>(Ljava/lang/String;ZLjava/lang/String;ZZ)V
위와 같은 오류가 나타나며 정상적으로 페이지를 열수가 없었다.
TLD파일 관련 오류는 컴파일된 jsp파일을 삭제하여도 없어지지 않았다.

직접적인 해결방법은 얻지 못하였지만 비슷한 케이스중 답변이 달린것중에 클래스패스를 의심해보라는 글이 있어서
클러그인 실행 환경을 변경하여 보았다.
User Entries라 하여 프로젝트에 설정한 클래스패스 또는 직접 jar나 zip을 추가할수 있는 부분에서
프로젝트에서 가져온 default classpath를 삭제하였다.
default classpath를 삭제하고 필요한 프로젝트나 Library를 직접 입력하니 
 java.lang.VerifyError 와 java.lang.NoSuchMethodError: javax.servlet.jsp.tagext.TagAttributeInfo.<init> 모두 발생하지 않아다. jsp도 정상적으로 컴파일된다.

이클립스의 플러그인 환경 뿐아니라 WAS를 콘솔에서 실행키시는 환경에서도 발생할수 있다.
이럴때 클래스패스중 중복된것을 제거하는 등 정리하여보자.

유사한 문제의 다른 해결 방법
http://okjsp.pe.kr/seq/26519


저작자 표시
신고
Posted by 영겁회귀

티스토리 툴바