'Eclipse'에 해당되는 글 82

  1. 2010.07.23 형상관리 상황 보기 - Eclipse SVN Repository
  2. 2010.07.21 버전 관리에 대한 이것저것...
  3. 2010.07.21 Subversion을 활용한 소스 관리 전략
  4. 2010.07.21 Eclipse에서 브랜칭, 태깅하기
  5. 2010.07.18 Eclipse에서 Subversion에 프로젝트 올리기
  6. 2010.07.03 CVS - ProxyHTTP: java.io.IOException
  7. 2010.06.18 이클립스에서 Annotation 색상 변경하기
  8. 2010.05.24 com.sun.tools.javac.Main is not on the classpath.
  9. 2010.05.20 J2EE Preview - Eclipse/Servers
  10. 2010.05.20 이클립스 파헤치기
  11. 2010.05.17 Eclipse에서 Tomcat 포트번호 변경하기
  12. 2010.05.11 Eclipse Galileo + Subversive - Check Out 1
  13. 2010.04.08 Eclipse Tasks View
  14. 2010.03.29 이클립스에서 소스 따라가기가 안될때
  15. 2010.03.25 미루던 일, SVN에서 소스 Checkout하기
  16. 2010.01.11 Galileo
  17. 2010.01.11 Spring 소스 연결
  18. 2010.01.10 Eclipse Console
  19. 2010.01.10 Developing a Spring Framework MVC application step-by-step 예제 실행하기
  20. 2009.12.27 윈도우 프로세스 - 이클립스에서 실행시킨 톰캣의 프로세스
  21. 2009.12.21 서버가 구동되지 않을때
  22. 2009.12.12 Setting property 'source' to 'org.eclipse.jst.jee.server:edi' did not find a matching property.
  23. 2009.11.25 자바 원격 디버깅
  24. 2009.10.15 Getting started with JavaServer Faces 1.2, Part 1
  25. 2009.10.06 Subversion에서 소스만 가져오기
  26. 2009.09.07 [SVN] Transaction is out of date
  27. 2009.08.29 개발 환경 및 도구
  28. 2009.08.23 Eclipse Galileo + Subversive
  29. 2009.08.07 Eclipse에서 Tomcat 구동시 사용하는 설정파일
  30. 2009.07.26 Eclipse Data Source Explorer에 Derby 설정

형상관리 상황 보기 - Eclipse SVN Repository

SVN을 trunk만 사용하다 branch와 tag를 사용하는데 어디가 최신 소스인지, 내가 작업을 해야 하는 곳인지 헷갈린다.

일반적으로 trunk가 최신 소스일거다.
특별한 작업이 있다면 branch가 있을거고.

SVN Repository를 보자.
리비전 608에서 태그를 달아서 610이 되었다.
아마도 trunk 608과 동일하겠지. 그후 trunk에서 변경사항이 없었다.

항상 여기서 확인하자.

- 소스 체크아웃할때도 여기에서 소스 위치와 WebContent 위치를 확인할 것.
- 프로젝트 생성시 web.xml 생성하지마.
- svn:ignore 반드시 설정할 것.

버전 관리에 대한 이것저것...

- 버전 관리되고 있는 파일을 버전 관리에서 제외하기 : 참고

  1. 동기화
  2. SVN Repository에서 해당 파일을 삭제한다.(서버)
  3. 로컬 개발 환경에서 해당 파일을 백업받아 둔다.
  4. SVN에서 update 받는다.
  5. 백업받아둔 파일을 다시 넣으면 svn:ignore 가 활성화된다.
  6. 커밋한다.
- svn:ignore 프로퍼티를 수정해서 적용해봤는데 안됨...왜 그럴까? =-=> todo


- Maven 또는 Ivy 로 관련 라이브러리를 관리하는 것도 좋겠다.

Subversion을 활용한 소스 관리 전략

- 소스 형상 관리를 하다보면 이런 경우가 많다.
현재 운영되고 있는 시스템인데 현업으로부터 빈번한 수정사항이 나와서 소스변경이 잦다.
가끔 개선사항으로 일정 기간이 소요되는 작업이 나오는데 소스를 로컬에서 관리한다.
Subversion을 소스 저장소로만 사용하고 있다.

Subversion의 기능을 좀더 활용해 보자.
아래와 같은 과정을 거치도록 한다.
* 메인 스트림은 trunk, 개발 스트림은 B1으로 이해하자.

1. 모든 소스를 형상관리 시스템에 올려서 동기화 시킨다.

2. 현재 소스가 운영되고 있는 소스와 동일하다. : R1 태깅

3. 2주일 정도의 작업량이 들어와서 소스를 수정해야 한다.
현재는 형상관리 시스템과 운영되고 있는 소스와 일치시키기 위해 개발되고 있는 소스는 개발자의 로컬에만 존재한다.
개발자 장비가 없으면 수정하던 작업이 진행이 안된다.
이건 문제가 있다.

4. 메인 스트림과 별도의 개발 스트림을 만든다. : B1 브랜칭

5. B1에서 개발을 진행한다. : 소스를 수정하고 커밋한다.

6. 개발 진행중에 현재 운영중인 시스템에서 버그가 발견된다.
trunk에서 버그가 발견된 것이다.
현재 운영중인 소스(2)를 가져온다. : R1으로 스위칭
별도의 프로젝트를 만들어서 가져와도 되지만 동일한 소스때문에 헷갈릴 수도 있다. 작업이 끝나면 소스는 하나만 유지하자.

7. R1에서 버그를 수정하고 테스트한다.
R1에서 커밋을 하려고 하면 태그를 수정하겠냐고 물어본다. 하면 안된다.
태그는 특정 시점에 대한 스냅샷이다.
R1을 바탕으로 B1 브랜치도 만들어졌다.

8. trunk로 스위칭해서 커밋한다.

9. trunk에서 수정된 소스를 B1에도 적용한다.
그래야 버그가 처리된 소스가 최종적으로 적용된다.
B1에서 URL을 trunk로 두고 머지한다. 소스가 충돌나면 해결하고 커밋한다.

10. R2 태깅, 운영계에 적용, 이제부터 운영되는 소스는 R2다.

11. 개발이 완료되었음. branch에서 커밋

12. 개발계에 B1 소스를 올린다.

- 메인 스트림에서 버그나 수정사항이 나오면 trunk에서 수정해서 B1으로 머지한다.
테스트되는 소스는 B1이지만 trunk와 동일한 소스이다. trunk의 수정사항이 모두 반영된 소스이다.
테스트하면서 나온 수정사항은 B1에서 수정한다.(이 때 최신 소스는 B1이다. 그리고 이것으로 테스트되어야 한다)

13. 테스트가 완료되면 trunk에서 URL을 B1으로 두고 머지하고 R3 태깅, 운영계에 적용

여기서 중요한 점은 메인 스트림에서 변경되는 소스를 개발 스트림에도 적용을 한다는 것이다.
그리고 메인 스트림으로 반영하는 것은 운영계에 올리기 전에 한다.
운영계에 올리는 소스는 반드시 태그를 걸어 둔다.

- 2010-07-22
문득 trunk에서 태깅을 해야 하나 하는 생각이 든다.
현재 운영되고 있는 소스는 trunk의 최신본(HEAD)이다.
마지막 태깅된 소스와 동일하다.
브랜칭을 하기 전의 태깅은 필수고 trunk에서 직접 소스를 수정해서 반영하는 경우도 있으므로 태깅은 필수다.
이제는 개발자들이 trunk에서 커밋을 마음놓고 해도 된다.
단, 테스트가 된 소스를 올려야겠지.

Eclipse에서 브랜칭, 태깅하기

Merge하는 부분은 여기를 참고하는 것이 더 좋다.

지금 현재 개발 프로세스는 운영기에 소스를 적용한 뒤에 SVN 저장소에 커밋을 한다.
개발 브랜치를 따로 가져가서 소스를 관리하자.

- 먼저, 브랜치를 만든다.
Subversive를 사용하면 branches/가 이미 만들어져 있다.

브랜치 이름은 Trac 마일스톤 이름(또는 티켓 번호)과 동일하게 가져가면 좋을 거 같다.

- 브랜치에서 작업을 하고 커밋을 한다.

- 메인 스트림으로 돌아와서(Switch) 병합한다.(Merge)
URL은 수정 작업을 한 브랜치의 URL을 선택한다.[각주:1]
리비전을 선택할 수도 있다.

- 충돌이 나는 경우 소스 비교가 제대로 되지 않으므로 주의한다.
소스를 검토해서 수정후 Mark as Merged를 하면 충돌 표시가 사라진다. 커밋한다.
trunk에 있는 소스 리비전은 47
그래서 Remote File에 보이는 리비전도 47이다.
branches에서 merge한 소스는 48이다.(int balance //branch)
Edit Conflicts를 하면 오른쪽 뷰어(Repository로 표시됨, 지금은 Remote File 47)는 다른 리비전을 보여주고 Working 소스는 현재의 리비전인 47을 보여주기 때문에 소스 비교하기가 힘들다.
직접 수정하는 것이 편하다.

- 자주 병합을 해서 빅뱅을 피하라고 함.

- Revert 기능을 이용하면 병합하기 전으로 되돌릴 수 있다.

- 특정 리비전에 의미있는 태깅을 할 수 있다.
  1. 이 경우는 메인 스트림(trunk)에서 로 입력한 브랜치를 가져오게 된다. [본문으로]

Eclipse에서 Subversion에 프로젝트 올리기

SVN Repositories 에서 디렉토리를 만들어 두거나 share하면서 경로를 지정한다.

.settings/, .project, .classpath, build/ 는 반드시 뺀다.
커밋한다.
Add to svn:ignore...로 점검

- 2012-01-10
SVN Repository에서 .../svn/HelloTOW/TDD/trunk/ 를 만들고 Share하는 경우 문제가 생기면 마지막 trunk/ 는 삭제하고 Share를 한다.
(플러그인에 따라서 문제가 생기는 경우도 있네.)

CVS - ProxyHTTP: java.io.IOException

Problems reported while synchronizing CVS Workspace. 0 of 2 resources were synchronized.
  An error occurred synchronizing /a_proj_3.0/src/운영_serverConfig.properties: Could not connect to :pserver:user5@1.2.3.4:/cvs: I/O exception occurred: ProxyHTTP: java.io.IOException
    Could not connect to :pserver:user5@1.2.3.4:/cvs: I/O exception occurred: ProxyHTTP: java.io.IOException
    ProxyHTTP: java.io.IOException

IE에 프록시 설정을 했더니 이클립스에서 CVS 저장소와 동기화하면서 발생한 에러

이클립스에서 Annotation 색상 변경하기

처음 이클립스를 사용하면서 제일 마음에 들었던 것이 Mark Occurrences 기능이었다.
어떤 변수나 메서드가 사용된 곳을 표시해 주는 아주 유용한 기능이다.

텍스트 편집기에서 코딩할 때는 Ctrl + F3, F4 를 애용했었는데.

그런데 하나 불만인 것이 연한 회색으로 표시되어서 눈에 잘 띄지가 않는다는 것이다.

오늘 마음 먹고 뒤져 봤다.
여기저기 뒤져보니 나온다. 음하하

Box나 Dashed Box보다 Highlighted가 낫다.
Squiggly Line 구불구불한 선
Vertical Bar

 

2011-01-10 추가

색은 다른거와 구별되는 밝은 노란색...이 좋네. Warning과 중복되어서 구별 안됨.

2021-07-05 빨간색 계열은 에러, 검은색은 에디터에서 안보임.

  초록색ㅋ

 

com.sun.tools.javac.Main is not on the classpath.

Eclipse에서 Ant로 빌드하는데 발생한 에러

com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "C:\Program Files\Java\jre6"
- JAVA_HOME을 지정하거나 , PATH에 JDK/bin/을 추가했는데 안됨. [각주:1]

- Ant 설정의 Runtime - Classpath에 tools.jar를 추가한다.
tools.jar를 jre/lib/ext/에 두라고 하는데 글쎄....이클립스 환경은 클래스패스가 별도로 가지 않나?

- build.xml에 사용될 컴파일러를 명시적으로 지정할수가 있다고 한다. 근데 이건 좀 아닌듯. 이클립스에 종속됨. [todo] 예전에 모시스템 테스트계에서 발생했던 에러는?
  1. 지금 생각해보니 이클립스를 재시작 안했다. 윽...그래도 아래 방법이 제일 나은거 같다. [본문으로]

J2EE Preview - Eclipse/Servers

Galileo에서 Server Runtime 설정을 하다보니 J2EE Preview라는게 있다.
검색해도 잘 안나오던데...역쉬 도움말에 있다.

이클립스에 내장된 AS라고 한다.
실 서버에 올리기 전에 테스트하기 쉽게 기능을 제공한다고 함.
더 자세히는 나오지 않는다.

JSP, Servlet, JSTL 다 잘 돌아가네.
별도의 AS를 설치할 필요없이 이걸 사용해도 되겠다.

알고 보니 Jetty다.

- 2010-07-16 추가
Servlet : 2.5
JSP : 2.0
ServerInfo : jetty/6.1.15
RealPath : D:\resources\reps\eclipse_galileo_workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\Test
ContextPath : /Test

이클립스 파헤치기

이클립스를 잘 사용하는 방법이라고나 할까?
좋은 프로그램에는 잘 정리된 문서가 있다.
Tips and tricks를 살펴보고 새로운 버전에서는 어떤 기능이 추가되었는지 본다.
이게 제일 좋은 방법이다.


Eclipse에서 Tomcat 포트번호 변경하기

- Server name에 포트번호도 넣어 두자.
admin 포트는 8005 -> 8101
HTTP 포트는 8080 -> 8081
AJP 포트는 8009 -> 8201

Eclipse Galileo + Subversive - Check Out

- 저장소 구조를 확인한다.
trunk에서 받으면 된다.(내가 주로 사용하는 구조에서는)
Java 소스 디렉토리명, Web 루트 디렉토리명을 확인해 두면 좋다.

svn://1.2.3.4/xxx_rep/를 열면 각 디렉토리가 보인다.
svn://1.2.3.4/xxx_rep/aaa_dev/trunk를 연 경우 ROOT 리비전(?)도 보여준다.

- 소스 루트(프로젝트 루트)에서 Check Out As 를 한다.
New Project Wizard를 이용해서 프로젝트를 생성한다.

- Checkout만 하면 컴파일은 되지 않는(?) 프로젝트가 만들어진다.
읽기용으로는 좋다.(완전하지 않는 외부 소스 참고용)
수정도 되고 버전관리도 된다.

Eclipse Tasks View

예전부터 코딩을 하다가 중간중간에 생각난 아이디어를 소스에 많이 남겨 놓는다.
fixme로 해서.
이클립스를 사용하면서 Task(Java - Compiler - Task Tags)로 등록하기는 했는데 이걸 보는게 너무 불편해서 이것저것 만지작거려 보니 내가 원하는대로 되네.

- 원하는 프로젝트에서만 볼수도 있다.

이클립스에서 소스 따라가기가 안될때

- build path를 다시 설정한다.


- jre 1.5.0_12 로 설정되어 있지만 Installed JREs에는 없다.

미루던 일, SVN에서 소스 Checkout하기

Trac 소스 브라우저로 소스를 검토함.
Eclipse로 받으면 되는데 귀찮아서 미루다가 오늘 함.

SVN Repository Exploring 퍼스펙티브에서 Checkout함.


거봐 금방되는데.(소스만 내려받는거면 진짜 금방된다. 서버세팅도 금방된다.)

- 이때 Check out as a project in the workspace로 프로젝트를 생성하면 소스 보기만 된다.
Java Project가 아니라서 컴파일이 되지 않음.
소스 따라가기도 안됨.
아이콘 모양이 다르다.

New Project Wizard를 이용해서 프로젝트를 선택할 것.

- 이클립스에서 생성된 프로젝트를 그대로 올렸다면(.settings/, .classpath, .project 가 존재) New Project Wizard가 활성화되지 않는다.[각주:1]
  1. 2010-03-26 추가 [본문으로]

Galileo

Galileo에서 달라진 점.

- 별도의 플러그인 없이 인터페이스를 구현한 클래스로 바로 이동이 가능하다.

구현한 클래스가 여러 개인 경우 선택할 수 있다.

Spring 소스 연결


spring 이나 spring-webmvc 의 소스를 배포본의 src/로 잡는다.

Eclipse Console


Show Console When Standard Out Changes
Show Console When Standard Error Changes

테스트를 진행하거나 할때 표준 출력/에러가 콘솔에 찍히면 Console View 가 활성화되어서 불편하다.
그런 경우 이 옵션을 끈다.

Developing a Spring Framework MVC application step-by-step 예제 실행하기

이클립스에서 실행하기
- Dynamin Web Project로 만든다.
컴파일이 자동으로 되고, 클래스패스를 자동으로 잡아준다.

- Ant는 Outline View에서 실행시킨다.
[todo] 필요없는 target 지우기, 그러나 테스트서버에서는 필요하다. 필요한 target만 여기 적어놔.

- Tomcat은 Server View를 이용한다.

- Test는 단축키(@~x, t)를 이용한다.

IDE 사용하지 않고 실행하기
- Ant를 이용한다.

윈도우 프로세스 - 이클립스에서 실행시킨 톰캣의 프로세스


[todo] java.library.path 관련해서 분석해 볼 것.

서버가 구동되지 않을때

서버가 구동되지 않을때 제일 먼저 살펴볼 것은 포트 충돌이다.
물론 로그를 봐도 되겠지만 서버가 이상하게 동작하는 경우 재시작을 해봐도 이상한 증상이 나오는 경우 포트부터 점검해 볼 것.

> netstat -nao | findstr 8080
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       2648
  TCP    10.20.30.40:8080      111.212.50.111:3550    TIME_WAIT       0
  TCP    10.20.30.40:8080      111.212.50.111:3575    TIME_WAIT       0

작업관리자에서 해당 PID를 찾아서 확인한다.

  1. 주로 보면 서비스로 서버를 띄우고, 콘솔로 서버를 다시 띄우는 경우도 많다.
  2. 기존에 설치된 프로그램이 같은 포트를 사용하고 있는 경우


  3. 서버가 제대로 내려가지 않은 경우도 있다. : 이클립스에서 톰캣을 구동시켰는데 문제가 생겨 이클립스만 닫은 경우
  4. 방화벽으로 막혀 있는 경우도 있다.

Setting property 'source' to 'org.eclipse.jst.jee.server:edi' did not find a matching property.

- Eclipse(3.4)에서 Tomcat(6.0)을 실행시키는데 이런 에러가 발생했다.
  1. 톰캣을 중지시키고
  2. Server Overview - Server Options에서
  3. Publish module context to separate XML files를 체크하고 저장
  4. 톰캣을 다시 시작한다.

자바 원격 디버깅

Getting started with JavaServer Faces 1.2, Part 1

JSF 1.2 시작하기, Part 1
Getting started with JavaServer Faces 1.2, Part 1

- Dynamic Web Project에 JSF 예제 돌리기
  1. 필요한 라이브러리를 PROJECT/WEB/WEB-INF/lib/에 추가한다.
    1. C:\Program Files\glassfish-v3-prelude\glassfish\modules\web\jsf-impl.jar
    2. C:\Program Files\glassfish-v3-prelude\glassfish\modules\jsf-api.jar
    3. jstl.jar
  2. 환경설정파일을 추가, 수정한다.
    1. faces-config.xml
    2. web.xml
  3. 예제 소스를 추가한다.
    1. /index.jsp
    2. /pages/calculator.jsp
    3. src/com/arcmind/jsfquickstart/model/Calculator.java
  4. 브라우저로 확인한다.
- MyFaces 구현체로도 가능할거야. [todo]

[todo] 원리를 좀더 추가해야 하지 않나?

Subversion에서 소스만 가져오기



[SVN] Transaction is out of date

Transaction is out of date 라는 메세지가 나오는데 Synchronize Perspective 에서 Update 가 활성화되지 않는 경우가 있다.
Java EE Perspective 의 Team 컨텍스트에서 Update 를 하면 된다.

commit -m "build.xml 파일 제외" -N D:/TestProject //이클립스에서는 프로젝트 루트가 변경된 것으로 나타나는데 에러가 난다.
    Sending        D:/TestProject
    Transaction is out of date
svn: Commit failed (details follow):
svn: 시간이 오래되었습니다.: '/test_rep/trunk' (트랜잭션 '350-1')

update -r HEAD D:/TestProject //Java EE Perspective 에서 update
    At revision 350.

commit -m "build.xml 파일 제외" -N D:/TestProject //commit
    Sending        D:/TestProject
    Committed revision 351.

commit -m "" -N E:/resources/programs/eclipse/workspace/aproject/WebContent
    Sending        E:/resources/programs/eclipse/workspace/aproject/WebContent
    Merge conflict during commit
svn: Commit failed (details follow):
svn: Your file or directory '.' is probably out-of-date
svn: The version resource does not correspond to the resource within the transaction.  Either the requested version resource is out of date (needs to be updated), or the requested version resource is newer than the transaction root (restart the commit).

개발 환경 및 도구

- 이클립스
현재 주로 사용중, 자꾸 무거워지지만 만족함.

- NetBeans
예제를 실행시켜보기 위해 사용, 좋은 툴이다.

- JBuilder
예전에 스터디하면서 사용, 좋지만 너무 무거웠다.
요즘에 이클립스 기반으로 나오는거 같다.

- 에디트플러스
처음 프로그래밍 공부할때 사용자도구와 연결해서 사용했다.
텍스트파일 편집에는 최고인거 같다.
매크로 기능으로 한방에~~~

- vi
여기에 손이 익어서 vi 입력을 지원하지 않는 IDE는 사용할 수 없을 정도다.

- JDeveloper
좋은 툴이라고 한다.
한번 사용해 보자.

Eclipse Galileo + Subversive

- Eclipse Galileo 살펴보기
Galileo 에 포함된 프로젝트 소개 : CDT, EMF, Equinox, GEF, GMF, JDT, Mylyn, PDT, TPTP, WTP 등
(Galileo 에 대한 내용은 아님)

- Subversive 설치
Team Provider만 설치하면 될듯 ([todo] 종속적인 플러그인은 어떻게 되나?)

Connector 만 설치하면 된다고도 함.
http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/

- 다양한 레이아웃이 있다.
Subclipse에서는 볼수 없었던 부분이다. 처음 소스형상관리를 할때 많이 고민했던 부분이었다.

- 또 다른 점
Galileo에서 추가되었는지 잘 모르겠지만 Synchronize with Repository에 단축키가 할당되어 있다.
그동안 별도로 키를 바인딩하거나 다른 방법을 썼었는데, 이거 마음에 든다.

- Compare with Each Other
Subversive, Subclipse도 가능함.
Subversive에서는 각 리비전별로 비교가 가능함.

- 참고
[리뷰] SVN 플러그인 Subversive 설치 정리

Eclipse에서 Tomcat 구동시 사용하는 설정파일

CATALINA_HOME 은 Tomcat 이 설치된 위치가 되고
CATALINA_BASE 는 WORKSPACE/.metadata/.plugins/org.eclipse.wst.server.core/tmpN 으로 된다.

Servers 프로젝트내에 위치한 설정파일은 WORKSPACE/Servers/Tomcat v6.0 Server at localhost-config/ 에 위치한다.
여기에서 수정한 tomcat-users.xml 은 CATALINA_BASE/conf/ 에 디플로이된다.
(web.xml 은 수정해도 반영되지가 않네...)


- work/도 CATALINA_BASE 아래에서 찾을 수 있다.

Eclipse Data Source Explorer에 Derby 설정

더비를 네트워크 서버로 실행시켰는데 Eclipse Data Source Explorer에서는 접속이 안됨.
데이터베이스 경로를 data/airlinesDB이 아닌 절대경로로 맞출 것.
가니메데에서는 10.2 만 지원해서 그런지.
(더비는 10.5 인데 클라이언트도 버전을 타는지 잘 모르겠음)