제임스 고슬링 구글로 이적

자바의 아버지 제임스 고슬링 아저씨가 구글로 그 자리를 옮겼다고 합니다. 뭐 썬이 오라클로 넘어가면서 자연스레 오라클 소속이 되었다가 작년에 그만두었죠(http://kldp.org/node/114063). 일년의 공백 후 구글로 입사한 거니 딱히 자리를 옮겼다고 표현하기에도 뭐하지만요. 오라클의 자바 및 오픈소스 지원정책에 불만이 있었기에 오라클을 그만둔 그의 다음 포지션을 많은 이가 궁금해 했을 겁니다. IBM 정도가 아닐까 예상했는데.. 구글로 가는군요. 구글의 비공개 직위로 간다는데 이게.. 오라클과의 특허 분쟁 방어용으로 가는건지 혹은, 자바나 또다른 언어를 위한 것인지는 아직 알려진 바는 없습니다. 그의 강연이나 이전까지 보여준 독설이나 자바 옹호 행위에서 느낀 것은 고슬링아저씨가 위대한 사람이긴 해도 성인군자 스타일은 아니란 거죠. 오라클을 엿먹이기 위해 구글과 손잡았을 가능성도 전혀 배제하진 못하겠네요. 그 정도 창의력이 있는 사람이라면 앞으로도 혁신적인 일로 인류에 공헌하면 좋겠어요.
2011/03/29 12:26 2011/03/29 12:26
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

Unable to compile class for JSP

2011/03/22 03:09

서비 JAVA , ,

java / jsp 개발 시 거의 보기 어려운 익셉션으로 대게 아래와 같은 익셉션을 출력한다.
[code]
org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 3 in the jsp file: /src/test/test.jsp
Employee cannot be resolved to a type
1: <%@ page language="java" import="java.util.*,com.employee.*" pageEncoding="ISO-8859-1"%>
2: <%
3: Employee ddd = new Employee();
4: %>
[/code]

익셉션 출력물 그대로 jsp 파일을 .class 파일로 검파일 하지 못했다는 의미이다. 왜 그럴까?
예상하건데 첫 번째 라인의 import 내용과 3번째 라인의 클래스 생성코드를 삭제하고 실행하면 페이지가 열릴 것이다.
그럼, 이 예외상황은 import한 클래스를 찾지 못한 것인가? 그렇지 않다. import 가 잘못되었다면 NoSuchClassFound 같은 익셉션을 보게 될 것이다.

위와 같은 오류를 만나면 아래 jsp를 적당한 이름으로 저장한 후 컨텍스트 루트, 즉 WEB-INF 디렉토리가 있는 경로에 소스를 올리고 jsp를 호출해 보자.
[code]
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   <html>  
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
sun.boot.class.path : <%= System.getProperty("sun.boot.class.path") %>
sun.boot.library.path : <%= System.getProperty("sun.boot.library.path") %>
java.library.path : <%= System.getProperty("java.library.path") %>
java.class.path : <%= System.getProperty("java.class.path") %>
getClassLoader() : <%= this.getClass().getClassLoader() %>
DocumentBuilderFactory : <%= javax.xml.parsers.DocumentBuilderFactory.newInstance() %>
/javax/xml.parsers/DocumentBuilderFactory.class : <%= this.getClass().getResource("/javax/xml.parsers/DocumentBuilderFactory.class") %>
SAXParserFactory : <%= javax.xml.parsers.SAXParserFactory.newInstance() %>
/javax/xml/parsers/SAXParserFactory.class : <%= this.getClass().getResource("/javax/xml/parsers/SAXParserFactory.class") %>
TransformerFactory : <%= javax.xml.transform.TransformerFactory.newInstance() %>
/javax/xml/transform/TransformerFactory.class : <%= this.getClass().getResource("/javax/xml/transform/TransformerFactory.class") %>
<hr>
Servlet : <%= application.getMajorVersion() %>.<%= application.getMinorVersion() %>
JSP : <%= javax.servlet.jsp.JspFactory.getDefaultFactory().getEngineInfo().getSpecificationVersion() %>
ServerInfo : <%= application.getServerInfo() %>
RealPath : <%= application.getRealPath("/") %>
ContextPath : <%= request.getContextPath()%>
<hr>
totalMemory : <%= Runtime.getRuntime().totalMemory() %>
maxMemory : <%= Runtime.getRuntime().maxMemory() %>
freeMemory : <%= Runtime.getRuntime().freeMemory() %>
<hr>
    </body>
</html>
[/code]
위 소스를 실행하면 몇몇 중요한 정보를 얻을 수 있는데 그중에 request.getContextPath() 값을 한번 확인해 보자.
개발 시 의도했던 컨텍스트 루트가 아닐 가능성이 크다.
컨텍스트 루트가 의도했던 루트와 다르다면 웹서버든.. WAS든 host 설정과 관계된 설정파일을 보면서 해당 문제를 교정하면 된다.
원인은 컨텍스트가 다름으로 인해 import한 클래스를 클래스로더가 찾을 수 없어 발생하는 현상이다.

한가지 팁이라면 톰켓 + 가상호스트로  구성한 웹 어플리케이션의 컨텍스트 루트가 / 라면  [CATALINA_HOME]/conf/Catalina/[HOST_NAME]/ROOT.xml 의
Context 항목의 docBase는 "[웹어플리케이션경로]/ROOT" 와 같이 설정되어야 하고, 웹어플리케이션의 또한 [웹어플리케이션경로]/ROOT/  아래에 배포되어야  한다.

2011/03/22 03:09 2011/03/22 03:09
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. Blog Icon
    김진규

    와 진짜 정말 도움 많이됐습니다 ... 이 문제였어요 ㅠㅠ

헉.. 정신없는 사이 도메인이 사라질뻔 했군욤..

재작년 이직 이후 새로운 직장에 익숙해지기+업무로 이렇다 할 블로깅을 못하는 동안 드디어 호스팅 비용 지급일까지 깜빡하고 넘기게 되다니...
엊그제 그래도 사이트 살아있나 확인차 정말 오랜만에 블로그에 접속해보니... 뭥미? 도메인이 사라졌어!!
아뿔사... 호스팅 업체에 로그인해 invoice 항목을 보니 2월 중순에 도메인 리뉴얼 요금이 떠 있는 게 아닌가..
부랴부랴 paypal로 결제하고 또 열심히 메일 날렸다.. 돈 냈으니 살려달라고...

근데 예전엔 invoice 가 발생하면 메일로 알림이 왔었는데 근래에는 무슨 새로운 서비스나 요금플랜이 나왔다는 안내 메일 말고 비용 청구 메일은 없었던 거 같은데... 앞으로 비용 지급 기간 잘 확인해야겠어.

도메인 다시 살리고 접속하니 좋긴하네.
2011/03/10 12:43 2011/03/10 12:43
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. Blog Icon
    명정이...

    형~아직 블로그가 볼만한게 많아요~~