m2e+wtp에서 tomcat 디버깅 팁. JAVA

이클립스 m2e로 maven war프로젝트를 개발할 때 해당 프로젝트가 다른 프로젝트에 의존성을 가지니 아래같은 에러가 났다.

Invalid classpath publish/export dependency {의존 프로젝트}. Project entries not supported.

그러면서 이대로 tomcat으로 디버깅 테스트를 하면 해당 프로젝트 클래스를 못 찾아서  
java.lang.ClassNotFoundException 이 떨어진다. 


거의 두시간 이상 삽질 끝에 해결책을 찾았다. http://stackoverflow.com/questions/6799135/maven-project-in-eclipse-deployment-assembly-fails-build 에 있는 내용을 참고해서 해당 프로젝트의 Deployment Assembly항목에 의존하는 프로젝트를 직접 등록하고 실행하면 된다. 

=================
내용추가. 이렇게 한 번은 성공했는데 다음날 재시작 후에 다른 에러가 발생했다.
/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/myproject does not exist or is not a readable directory. 
라는 메시지와 함께 실행이 안 되었다.
내 경우는 위의 Deployment assembly에 설정한 의존 프로젝트 하나가 제대로 검출이 안 되는 것 때문이었다. 프로젝트 속성에서 해당 설정 부분을 가니 그 의존 프로젝트를 못 찾겠다는 메시지가 나와 있었고, 이것 때문에 빌드가 문제가 생기면서 톰캣 웹 앱 디렉토리에 파일들을 복사하는 것도 취소되었기 때문이다.

이렇게 프로젝트 파일이 복사가 안 되서 에러가 나는 원인은 여러 가지가 있는 것 같다. 위 사례는 그 중 한 가지이고 어떤 경우는 서버 프로젝트를 지원다 새로 만들던지, 아니면 그냥 이클립스만 재시작해도 문제가 해결되기도 한다. 어쨌든 뭔가 안 될 경우는 열심히 검색하고 검색에도 잘 안 나오는 것이라면 기록을 잘 해 두자.


오라클의 NLS_LANG 환경변수 이해. ORACLE

설치할 때 사람 헷갈리게하는 NLS_LANG에 대해 조금 알아봤다. 오라클에 가 보니 아예 nls_lang에 대한 faq 페이지가 따로 있었다.


요약부터 말하자면 NLS_LANG은 DB서버에 접속하는 클라이언트 환경을 지정하는 값이다. 즉 내 쉘이 UTF-8환경이고 여기서 sqlplus같은 프로그램으로 오라클 서버에 접속하려면 NLS_LANG=.UTF-8을 써야한다. 

sqlplus나 imp/exp 같은 프로그램은 사용자가 보내오는 입력(혹은 사용자로 보내는 출력)의 캐릭터셋이 무엇인지 확인할 때 NLS_LANG값을 참조한다. 즉 사용자가 UTF-8인코딩으로 데이터를 보내왔을테니 이것은 실제 DB서버의 캐릭터셋으로 변환해서 서버로 전송한다. 무조건 그렇게 하기 때문에 설정이 잘못되서 변환이 안 되는 문자가 있으면 ?로 바꾸어 서버에 전달하게 된다. 

이게 콘솔에서는 상관없는데 덤프 파일 등에서 읽어서 보내는 경우라면 해당 파일의 인코딩을 NLS_LANG의 인코딩과 동일하게 맞춰서 보내야 깨지지 않고 제대로 전달이 된다. 

언어_지역.로케일 식으로 사용하고 구분자가 있기 때문에 필요없는 것은 생략하고 필요한 부분만 작성해도 된다.


리눅스에서 오라클 10g설치 때 팁 하나 ORACLE

오라클 설치 때 시스템 로케일이 한글이면 인스톨러의 한글이 다 깨진다.

그 이유는 오라클이 기본 설치때 인스톨러 안에 있는 자체 jre(1.4버젼일거다)가 한글 폰트 문제 때문에 폰트를 못 찾아서 그렇다. 설치 설정 때 인스톨러에게 자체 jre가 아니고 시스템에 설치된 1.5이상 버젼의 jre를 쓰도록 바꾸면 한글이 문제없이 나온다. 아래같은 식으로...

./runInstaller -jreLoc /your/jre/location

나머지는 알아서 계속 진행하자.

M2E plugin execution not covered . JAVA

maven프로젝트 하면서 pom파일 플러그인 설정을 그냥 다른 데 것 베끼기&붙여넣기로 들고왔다면 저런 에러를 볼 경우가 생길 수 있다. 쉘 maven은 문제없이 넘어가는데 m2eclipse 1.0이후부터만 이 에러 메시지가 나타난다. 

m2e제작진도 알고 있어서 아예 따로 설명 항목을 만들었다. 

그런데 뭔 말인지 대충만 이해가 가서 그 해결책이 뭔지는 도통 모르겠다. 해석 좀 더 해보고 정리해서 마져 올릴 예정이다.

맥오에스 터미널에서 cassandra-cli 한글 보기. JAVA

맥오에스 터미널 출력을 UTF-8로 잡아놨다면, cassandra-cli 를 실행시켰을 때 값을 조회해 보면 한글 부분이 다 #으로 나오는 것을 목격할 수 있다. 

처음에는 그냥 넘어갔는데 이제는 불편해서 해결할 방법을 찾아야한다. 

결론부터 짧게 쓰면 bin/cassandra-cli 파일 (내부는 쉘스크립트다) 안에서 java로 실행하는 코드에  -Dfile.encoding=UTF8  를 추가하면 된다.

0.7.6.2 버젼 기준으로 46번째 줄을
<  $JAVA -ea -cp $CLASSPATH -Xmx256M \
-----
> $JAVA -ea -cp $CLASSPATH -Xmx256M -Dfile.encoding=UTF8 \

이렇게 바꾸자. 

더 자세한 설명을 쓰자면, 내 터미널은 글자를 utf-8로 간주해 해석을 하는데 자바는 euc-kr로 내뿜어서 글자가 깨지는 거였다. 
이전 블로그에서 작성했던 http://psg9.egloos.com/1131327 내용을 참고하자. 


1 2 3 4 5 6 7 8 9 10 다음



메모장

W 위젯