기본 콘텐츠로 건너뛰기

11월, 2005의 게시물 표시

언제나 마지막일 것 같은 고비를 만난다

소프트웨어 개발에 있어 항상 공격적인 목표를 설정하고, 때로는 그 예측이 크게 어긋나 목표로서의 가치를 잃기도 하고, 때로는 주관적인 조건이 따라주지 못해 지키지 못하기도 하고...

항상 이렇게 개발 데드라인과 delivery 일정 속에 절박한 심정으로 자신을 돌아본다.

때로는 미칠 것 같은, 때로는 쓰러질 것 같은 압박을 느끼며 심리적 안정을 찾기 위해 이것저것을 해본다.

음악을 큰 소리로 틀거나, 산책을 하거나, 잠을 자거나(!), ...

힘들 때일수록 무료하게 시간을 보내는 것보다는 분위기를 적극적으로 전환할 수 있는 방법을 찾는 것이 효율적이다.
가장 피해야 할 것은 자학적인 웹 산책이나 폭식 등 스스로를 더 힘들고 피곤하게 만들 것들이다.

때로는 아무 생각없이 반복적인 코딩으로 시간을 보내는 것도 좋은 방법이다.
항상 코더에게 집중이 필요한 코드만 필요한 것은 아니기 때문에... (이러한 코딩은 더 지능적인 툴의 개발로 해결했으면 더 좋으려만 ^^;;)

자, 다시 가자, Cheer UP!

NoClassDefFoundError!

NoClassDefFoundError는 자바 실행 시에 ClassNotFoundException과 함께 심심찮게 만나게 되는 에러이다.
이 두 가지 에러는 조금 혼란스럽다.

클래스 경로에 클래스가 없을 경우, Class.forName("SomeClass")으로 찾을 경우 ClassNotFoundException이 발생하지만, new SomeClass()로 사용한 경우에는 NoClassDefFoundError가 나게 된다. 이 경우는 컴파일 시에는 존재했던 클래스 바이트 정의를 런타임 시에 찾지 못한 경우로 대표적인 NoClassDefFoundErorr의 발생 예이다. NoClassDefFoundError가 LinkageError의 자식 클래스인 것도 이를 뒷받침해준다.

이 외에도 NoClassDefFoundError가 발생하는 경우가 있는데, 실제 Java VM에서 어떤 경우에 NoClassDefFoundError를 발생시키는지 유형을 정리해두면 문제가 발생했을 때 해결 혹은 판단에 도움이 될 것이다.

VirtualMachine.redefineClasses : if the bytes don't correspond to the reference type (the class names don't match).ClassLoader.defineClass : 바이트 코드가 정의한 클래스 이름과 정의하려는 이름이 다를 경우RMIClassLoader static initializer : RMIClassLoader 제공자 클래스를 찾지 못했을 때rmi MarshalInputStream static initializer : rmi server를 위한 시스템 클래스를 찾지 못했을 때