linux jar관련 질문입니다.

조회수 2193회

현재 리눅스를 이용해서 war로 tomcat서버를 돌리고,

jar를 통해 java application을 실행하도록 하는 서버를 구축중인데요.

jar를 통해 소켓통신을 해야하는 상황인데

이클립스로 run을 하면 아무 문제 없이 일단 정상적으로 작동을 합니다.

서버를 2주전부터 처음만지는 것이라 많이 힘드네요.

게다가 리눅스조차 처음 만지는 것이다 보니 이것저것 헤메이고 있는데요.

jar을 실행시키면서 QurryProcess.xml 이랑 SqlMapConfig.xml 을 parsing을 해야하는데

jar 내부에 있는 xml에 접근을 못하는 에러인 것 같아 3일동안 찾고 있는데 아직 해결을 못했습니다 ㅠ

혹시나 하는 마음에 질문을 남깁니다. 에러코드도 같이 올리도록 하겠습니다.

혹시 다른 것들이 필요하다면 정보가 크게 세어나가지 않는 선에서 보여드릴 수 있어요 ㅠㅠ

java.lang.RuntimeException: Error occurred. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: java.io.IOException: Could not find resource ./com/swt/server/db/ibatis/QueryProcess_Main.xml at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:49) at com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(SqlMapClientBuilder.java:63) at com.swt.server.db.ibatis.MyAppSqlMapConfig.(MyAppSqlMapConfig.java:17) at com.swt.server.core.Swt_Process_Core.processProtocol(Swt_Process_Core.java:204) at com.swt.server.core.Swt_Process_Core.run(Swt_Process_Core.java:114) Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: java.io.IOException: Could not find resource ./com/swt/server/db/ibatis/QueryProcess_Main.xml at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:53) at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:46) ... 4 more

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • Could not find resource ./com/swt/server/db/ibatis/QueryProcess_Main.xml

    xml 파일을 못 찾는 듯 싶네요.

    못찾는 이유는 xml 파일을 classpath에서 찾기 때문입니다.

    jar 내의 classes 디렉토리에 xml파일이 위치해야합니다.

    그리고 다른 한가지 방법은 아래와 같이 수정하고 테스트 해보세요,

    Reader reader = Resources.getResourceAsReader("상대 xml 파일 경로");

    를 사용하고 있다면

    Reader reader = new java.io.FileReader("/home/aaaa/bbbb/"); // 절대경로

    SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);

    와 같은 식으로 변경하고 해보세요.

    • 제 프로젝트엔 jar내부엔 classes 디렉토리가 없어요 ㅠㅠ 알 수 없는 사용자 2017.4.17 10:07
    • 이클립스로 프로젝트를 작성할 땐 classese에 xml파일이 있는데 jar파일로 만들기만 하면 build 디렉토리가 없어지는데 이건 어떻게 해야하나요? 알 수 없는 사용자 2017.4.17 11:56
    • jar 파일내에 classes 디렉토리가 있어야 한다는 이야기라기보다 classpath에 xml이 있어야 한다는 의미입니다.jvm이 class를 찾는 위치에 있어야 한다는 의미로 적은것입니다. build 디렉토리가 없는 것이 맞고 중요한 것은 jar파일에 xml파일이 함께 저장되어야 합니다. 그렇게해도 xml을 못찾으면 Reader reader = new java.io.FileReader("/home/aaaa/bbbb/"); 와 같이 수정해서 직접 xml 파일을 읽어드려서 테스트해보세요. 정영훈 2017.4.17 12:13
    • jar 내부에 xml 파일을 읽어오긴하는데 sqlmap resource 이부분을 읽어오지 못하는거 아닌가욥? 같은 디렉토리에 클래스파일이랑 xml 파일이 존재합니당....ㅠㅠ 알 수 없는 사용자 2017.4.17 16:34
    • 또한 reader를 절대경로로 설정해서 작업하려하면 앱을 실행하고 나서부터 바로 에러가 발생해버려요 알 수 없는 사용자 2017.4.17 16:35
    • 절대경로 설정시 에러를 적어주세요. 정영훈 2017.4.17 16:45
    • 아님다 절대경로 설정하니까 xml parsing 에러는 나지 않네요 그대신 다른 에러가....ㅠㅠ 알 수 없는 사용자 2017.4.17 18:52
    • 그건 제가 해결할 수 있을것 같습니당 정말 감사합니다~! 알 수 없는 사용자 2017.4.17 18:52

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)