java.lang.NoClassDefFoundError, java.lang.NoSuchMethodError 등은 여러 J2EE 애플리케이션이 설치되어있는 WAS 에서 개발을 하거나 운영하는 사람들이 심심찮게 볼 수 있는 메시지이다.
다른 버전의 같은 라이브러리가 설치되어서 발생하기도 하고 다른 쪽 모듈에서 관리하는 Remote EJB 에서 보기도 한다.
가장 속상할 때는 내가 관리하는 클래스가 다른 사람이 쓰려고 묶어둔 jar 파일 안에 숨어서 못찾을 때가 아닐까?
그 외에도 log4j.properties 를 분명 맞게 작성을 했는데 영 다른 설정을 읽어서 애를 먹이기도 하고,
리소스를 수정했는데도 자꾸 변경 전의 리소스가 나오고...
J2EE 애플리케이션에서는 이와같이 classpath 와 classloader 의 복잡성으로 인해서 해결하기 쉽지많은 않은 문제들을 종종 만난다.
참다 못해 이런 문제를 손쉽게 찾을 수 있는 JSP 를 만들었다.
which.jsp
유닉스에 있는 실행파일을 찾아주는 which 의 이름을 딴 페이지이다.
JSP 페이지를 인식하는 아무 경로에나 갖다두고 브라우저에서 열면 다음과 같은 화면이 뜬다.
개발자스러운 화면...
input 박스에 다음과 같이 패키지 경로는 '/' 으로 구분하여 적고 뒤에 확장자까지..
즉 클래스로더에서 리소스를 가져오는 패키지에 따른 파일을 찾듯이 적는다.
org/apache/commons/collections/FastHashMap.class
엔터를 치거나 옆의 버튼을 클릭하면 다음과 같이 클래스가 로딩된 위치및 간단한 클래스 정보를 보여준다.
중간의 클래스이름 옆의 "+" 가 적힌 버튼을 클릭하면 다음과 같이 클래스의 외부에서 접근가능한 메소드, 필드 등을 보여주며 수퍼클래스나 구현한 인터페이스에는 링크가 걸려있어서 해당 클래스의 로딩된 경로도 볼 수 있다.
이런 저런 설정 필요없이 아무데나 설치할 수 있게 JSP 하나에 기능을 다 넣었으며,
보안상 위험하다고 생각이 된다면 접근권한을 적용해서 디플로이하면 좋을 것이다.
아니면 한 번 쓰고 지워도 좋다.
파일은 아래의 링크에..
which.jsp
다른 버전의 같은 라이브러리가 설치되어서 발생하기도 하고 다른 쪽 모듈에서 관리하는 Remote EJB 에서 보기도 한다.
가장 속상할 때는 내가 관리하는 클래스가 다른 사람이 쓰려고 묶어둔 jar 파일 안에 숨어서 못찾을 때가 아닐까?
그 외에도 log4j.properties 를 분명 맞게 작성을 했는데 영 다른 설정을 읽어서 애를 먹이기도 하고,
리소스를 수정했는데도 자꾸 변경 전의 리소스가 나오고...
J2EE 애플리케이션에서는 이와같이 classpath 와 classloader 의 복잡성으로 인해서 해결하기 쉽지많은 않은 문제들을 종종 만난다.
참다 못해 이런 문제를 손쉽게 찾을 수 있는 JSP 를 만들었다.
which.jsp
유닉스에 있는 실행파일을 찾아주는 which 의 이름을 딴 페이지이다.
JSP 페이지를 인식하는 아무 경로에나 갖다두고 브라우저에서 열면 다음과 같은 화면이 뜬다.

input 박스에 다음과 같이 패키지 경로는 '/' 으로 구분하여 적고 뒤에 확장자까지..
즉 클래스로더에서 리소스를 가져오는 패키지에 따른 파일을 찾듯이 적는다.
org/apache/commons/collections/FastHashMap.class
엔터를 치거나 옆의 버튼을 클릭하면 다음과 같이 클래스가 로딩된 위치및 간단한 클래스 정보를 보여준다.


보안상 위험하다고 생각이 된다면 접근권한을 적용해서 디플로이하면 좋을 것이다.
아니면 한 번 쓰고 지워도 좋다.
파일은 아래의 링크에..
which.jsp
위의 링크를 마우스 오른쪽 버튼으로 클릭해서 다른이름으로 저장을 하면 희한하게 확장자가 htm 으로 바뀐다. 그럼 확장자를 jsp 로 바꿔서 원하는 웹 어플리케이션에 저장해서 사용한다.
FireFox 에서는 jsp 로 잘 저장이 되는데 인터넷 익스플로러가 좀 오버해서 처리하는 듯.
그냥 클릭하면 그냥 HTML 페이지처럼 보이니(OTL) 반드시 다른이름으로 저장해서 사용하세요~





덧글