커넥션 풀을 사용하기 위해 JOCL 파일을 이클립스가 아닌
(이클립스에서는 인식을 하지 못한다..왜!!)
워드패드를 통해 수정을 한 이후
이클립스에서 톰캣을 구동하려고 하니 저런 에러가 발생하였다.
이클립스와 파일 시스템간의 싱크가 안맞아서 생긴 문제 인 듯 한데...
이해 할 수 없음 ㅡ.ㅡ;;
아무튼 Project > Clean으로 깔끔하게 다시 리빌드 시켜주면 해결된다.
MyEclipse를 쓰면 신경안써도 된다던데..
그럴 필요성 까지는 못느끼겠다.
'작업노트/Error Handling'에 해당되는 글 19건
- 2007.12.18 [Eclipse] Resource is out of sync with the file system : ... 1
- 2007.09.07 서블릿을 사용할 경우 js파일 경로
- 2007.07.05 404 - Servlet action is not available
- 2007.06.27 error while loading shared libraries
- 2007.06.01 javax.servlet.ServletException: You have an error in your SQL syntax;
- 2007.05.29 NullPointerException...
- 2007.05.28 warning: unmappable character for encoding MS949 1
- 2007.05.27 [Struts] getDataSource() 메소드 관련..
- 2007.05.02 [NetBeans] Generics are not supported in -source 1.4(try using -source 1.5) 1
.js파일 안에 기입하고 jsp파일과 같은 디렉토리 안에 두고
script태그의 src 프로퍼티로 포함을 시킨 경우라면
그때의 상대경로는 jsp파일이 있는 디렉토리(sub/a.jsp)를 기준으로 하는 것이 아니라
서블릿의 경로명(/a.do)을 기준으로 하는 것이므로,
경로명에 jsp파일이 있는 디렉토리 명을 추가 해주어야 한다.
<script type="text/javascript" src="sub/httpRequest.js"></script>
이런식으로 말이다.
별것도 아닌데 삽질아닌 삽질을 하고야 말았다.
왠지 나중에도 까먹고 삽질할 것 같아 기록을 남긴다.-_-
여러가지 경우에 이 메세지가 뜰 수 있으나
이번 경우는
dbcp파일을 tomcat/common/lib 폴더에 두지 않아 생긴 문제
struts-config.xml 파일에서 data-source설정 부분에서
org.apache.commons.dbcp.BasicDataSource 를 찾지 못한것이다.
사소한거라 잊기 쉬우니 항상 기억하자.
해결책은...
root>#yum install libstdc++.so.5
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=5' at line 1 org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535) org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
root cause
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=5' at line 1 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2941) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715) com.mysql.jdbc.Connection.execSQL(Connection.java:3243) com.mysql.jdbc.Connection.execSQL(Connection.java:3172) com.mysql.jdbc.Statement.executeQuery(Statement.java:1197) org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208) myclasses.BbsDAO.getArticle(BbsDAO.java:84) myclasses.BbsDAO.getArticle(BbsDAO.java:71) myclasses.BbsAction.execute(BbsAction.java:49) org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.
mysql DB에서 rcount는 int(6)으로 되어있다.
그런데 DAO class 예제상의 코드에서는
long rcount = rs.getLong("rcount");
rs.updateLong("rcount", rcount+1);
이처럼 long형으로 처리하고 있다.
그래서 long->int로 바꾸었더니 자알~ 된다!
역시 책에 있는 예제라고 100% 믿을건 못되는 듯 하다.
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: Exception in JSP: /bbs_list.jsp:146 143: //if(p == null) { p = 1; } 144: out.print(p); 145: 146: int mypage = p.intValue(); 147: int currentBlock = (int)Math.ceil(mypage / (double)numPerBlock); 148: Integer tp = (Integer) request.getAttribute("totalPage"); 149: Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
root cause
java.lang.NullPointerException org.apache.jsp.bbs_005flist_jsp._jspService(bbs_005flist_jsp.java:318) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.
어의없는 실수.. jsp파일을 바로 먼저 실행해서 생긴문제.
action을 거치질 않아서 속성이 setting되지도 않았는데,
jsp를 바로 실행해서 getting하려 했으니 당연히 안될 수 밖에
bbs.do로 접근하여 실행하면 잘된다.(struts-config.xml에서 input 키워드 부분 비우고 나서...)
이걸로 얼마나 해맸던가... 너무 허무하다ㅠ
jsp파일을 run시킬때 이런 워닝이 떴다.
왜 이런 인코딩 에러가 나는지는 모르겠으나...
jsp파일을 싱글컴파일 하고 실행하니 다시 뜨지 않는다..
왜일까 ... 나에겐 멘토가 필요해...
DataSource dataSource = getDataSource( request, "key" );
라고 해줘야 되는데...
getDataSource라는 메소드는 org.apache.struts.action.Action 안에 있다...-_-
진작에 알았으면 Action 클래스 상속을 안해서 에러가 났다는걸 빨리 알 수 있었을 텐데...
답답....허다...
왜 그런가 했더니
초간단 설정문제였다. -_-
프로젝트 생성시에
Set Source Level to 1.4 라고 되어있는 check box에
체크를 해제시키고 생성시켜야한다.
이미 만들어진 프로젝트라면
프로젝트 속성(Properties)에 들어가서
Source Level을 1.4에서 1.5로 맞춰주면 해결된다.