비투즈의 노트르담

글은 톰캣 초보자나 나처럼 톰캣 경로에 대해 이해를 잘 못하고 공부한 학생한테 많은 도움이 될 듯 하다

나는 이걸로 한 달이란 시간을 허비했고(프로그래밍을 열심히 안 한 이유도 있다)

결국 형의 도움을 받아 해결했다.

 

우선 이런 경우를 접하려면 빈이나 서블릿을 사용하거나 모델2로 프로그래밍 하는 유저 일 것이다.

참고로 나는 막 모델1으로 코딩하다 모델2로 짜려고 올라가는 유저이다.

어쨌든 상황은 이렇다.

Tomcat7.0 ┌webapps┌ last ┌ test.jsp

                                         └ WEB-INF┌ classes┌ ha┌ ho ┌ flvillage.java

                                                                                └ DBBean.java

 

flvillage : 데이터를 저장하는 빈이다

DBBean : DB 처리빈이다.

test.jsp 이를 사용하는 페이지

 

flvillage.java

   package ha.ho;

컴파일 완료

DBBean.java

  package ha;

  import ho.flvillage;

  public void insertArticle(flvillage flBean) // 여기서 flvillage객체를 사용한다

 

 

 

 하지만 결과는 에러 ㅠㅠ

 이걸 보고 "아 저 바보 저렇게 하면 안되지" 하는 분들도 있겠지만

 나는 몰랐다 ㅠㅠ 그래도 오래 헤멨고 인터넷 찾아도 자세한 정보는 안나오니

 나같은 분을 위해 올린다.

 

원인부터 설명한다 : 나는 flvillage를 패키지 ha.ho로 했다.

(당연히 이클립스 영향때문에 ha.ho 패키지명을 써야하는줄 알았다

거기에 나는 package가 무조건 폴더랑 매치되야 되는줄 알았다.)

그런데 DBBean에서 상대 경로로 ho.flvillage라고 썻는데 flvillage 패키지는 ha.ho때문에 맞지 않아서 그렇다.

 

그럼 해결방법에 대해 알아보자.

 

방법1. 커맨드창에 들어가서 classes로 java파일을 다 꺼내고 -d . 옵션을 해서 컴파일 해준다.

        class파일은 패키지명에 따라 그 폴더에 생성하게 된다.

        그러면 last폴더를 기준으로 ha.ho의 flvillage.class가 생성되고 ha에 DBBean.class가 생성되면서 ha.ho의

        flvillage.class객체를 읽게 되서 무사히 컴파일된다.

 

방법2.그대로 ha랑 ho 폴더에 java파일을 냅두는 대신 DBBean은 패키지를 ha로 flvillage는 ho로 하고 DBBean은

        ho.flvillage로 읽어들이는 것이다.

 

방법1을 쓰면 java파일은 한 곳에 있고 class만 들어가기 때문에 class만 넣을 때 좋을 것 같고

방법2를 사용하면 자바랑 클래스 세트로 있기 때문에 같이 넣고 싶을때 좋을 것 같다.

 

내 설명이 미흡하지만 제발 나처럼 시간 날리는 유저가 줄어들길 원한다.

 

 

 

 

 

 

 

 

'프로그래밍 > JSP' 카테고리의 다른 글

JSP 총체적 분류  (0) 2013.04.05