접기
안녕하세요. 아직 해결이 안되서 다시 질문을 드립니다.
현재 상태는 왜 잘못된 것인지도 모르겠습니다.
(다른 노트북에서는 잘 돌아가는 프로젝트가 왜 회사에만 오면 실행이 안되는지.. 궁금합니다..ㅜㅠ)
우선 소스는 이렇습니다.
public final class IBatisDBConnector {
private static SqlMapClient mySQLMap;
static {
try {
Charset charset = Charset.forName("UTF-8");
System.out.println("1--------------------");
System.out.println("charset ----> "+charset);
Resources.setCharset(charset); //Charset 지정
System.out.println("2--------------------");
// 접속설정파일로드
String resource = "plantid/common/db/sqlconfig/SqlMapConfig.xml";
System.out.println("3--------------------");
System.out.println("resource -----> "+resource);
Reader reader = Resources.getResourceAsReader(resource);
System.out.println("reader ------> "+reader);
System.out.println("4--------------------");
mySQLMap = SqlMapClientBuilder.buildSqlMapClient(reader);
System.out.println("mySQLMap -----> "+mySQLMap);
System.out.println("5--------------------");
} catch (Exception e) {
System.out.println("6--------------------");
e.printStackTrace();
}
}
에러가 나는 부분을 실행해보면 콘솔창에는
1--------------------
charset ----> UTF-8
2--------------------
3--------------------
resource -----> plantid/common/db/sqlconfig/SqlMapConfig.xml
reader ------> java.io.InputStreamReader@2bbef4c6
4--------------------
이렇게 찍힙니다.
* mySQLMap = SqlMapClientBuilder.buildSqlMapClient(reader);
여기서 실행안되는 이유가 무엇일까요..
에러 메시지는
2014. 12. 19 오후 1:59:09 org.apache.catalina.core.StandardWrapperValve invoke
심각: Servlet.service() for servlet [ControllerAction] in context with path [/plantid] threw exception [java.lang.ExceptionInInitializerError] with root cause
java.lang.ClassNotFoundException: org.apache.log4j.Logger
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at sun.misc.Launcher$ExtClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at com.ibatis.common.logging.log4j.Log4jImpl.<init>(Log4jImpl.java:10)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.ibatis.common.logging.LogFactory.getLog(LogFactory.java:31)
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.<clinit>(SqlMapClientImpl.java:39)
at com.ibatis.sqlmap.engine.config.SqlMapConfiguration.<init>(SqlMapConfiguration.java:37)
at com.ibatis.sqlmap.engine.builder.xml.XmlParserState.<init>(XmlParserState.java:11)
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.<init>(SqlMapConfigParser.java:18)
at com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(SqlMapClientBuilder.java:63)
at plantid.common.db.sqlconfig.IBatisDBConnector.<clinit>(IBatisDBConnector.java:26)
at plantid.common.dao.CommonDao.SetDB(CommonDao.java:8)
at plantid.plant.dao.plantDao.getInstance(plantDao.java:22)
at plantid.plant.action.ListAction.requestPro(ListAction.java:43)
at plantid.common.controller.ControllerAction.requestPro(ControllerAction.java:100)
at plantid.common.controller.ControllerAction.doGet(ControllerAction.java:65)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
접기 답변 1.
java.lang.ClassNotFoundException: org.apache.log4j.Logger 이게 원인입니다.
jar버전 별로 해봤는데.. 안되네요 .더 찾아보겠습니다.
jdk 버전 문제가 아닌 log4j 관련 jar 파일이 클래스 패스에 없어서 문제가 발생한 것입니다.
내 답 2.
java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory 이번엔 이렇게.. 뜨고있어요 commons-logging-1.1.1.jar를 import시키라는데..그래도 안되네요;
답변 2-1.
음.. 일단 설정하신 의도는
1. 의도하신 클래스 패스 등록이 잘못되었습니다.
2. 현재 하신 방법은 좋지 않은 방법입니다.
JDK lib 폴더는 JDK 자체가 사용하는 라이브러리 폴더입니다. 프로젝트별로 3rd lib 는 별도로 관리하시는게 맞습니다.