이클립스 콘솔 버퍼 사이즈 제한 풀기

JAVA 2015. 11. 25. 16:20


window > Preferences > Run/Debug > Console
Console buffer size : 1000000  으로 수정 또는
Limit console output 체크박스 해제

자바 오류: The superclass " javax.servlet.http.HttpServlet" was not found

JAVA/버그 2015. 10. 28. 15:20

출처 : http://www.programkr.com/blog/McTM2ADMwYT3.html

자바 오류: The superclass " javax.servlet.http.HttpServlet" was not found


오랫동안 쓰지 코드, 오늘 새로 하나 만들기 프로젝트, 강력한 디자인 기능, 후 이 오류 발견

The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

나중에 한번 원래 없다 Tomcat 실행 시 따른 추가,

 

인터넷에서 검색 좀 해결 방법은 다음과 같다:

  1. 프로젝트파일 오른쪽단추->Build Path->Add Libraries->Server Runtime->Tomcat Server
  2. 전환 java Build Path 인터페이스 중 Orader and Export 선택 Tomcat


'JAVA > 버그' 카테고리의 다른 글

[Error] 'Launching new_configuration' has encountered a problem.  (0) 2013.04.02
[오류] 컨트롤 + 스페이스  (0) 2012.05.28

Java wav 재생

JAVA/소스 2015. 1. 10. 01:35

import java.io.File;

import javax.sound.sampled.AudioSystem;

import javax.sound.sampled.Clip;

public class Test {


/**

* @param args

*/

public static void main(String[] args) {

File Clap =new File("test.wav");

PlaySound(Clap);

}

static void PlaySound(File Sound)

{

try{

Clip clip = AudioSystem.getClip();

clip.open(AudioSystem.getAudioInputStream(Sound));

clip.start();

Thread.sleep(clip.getMicrosecondLength()/1000);

}

catch(Exception e)

{

}

}


}

'JAVA > 소스' 카테고리의 다른 글

자바 텍스트 한글자씩 읽기  (0) 2014.10.07
자바 피보나치  (0) 2014.01.13
자바 팩토리얼  (0) 2014.01.13
자바 구조 예제  (0) 2014.01.13
Hello Java  (0) 2014.01.13

자바 실행파일 만드는법

JAVA 2015. 1. 6. 15:50

http://opid.tistory.com/78

[Java] 기상청 날씨 정보 파싱 : 동네별>시간별 예보 XML (jdom 이용)

JAVA 2014. 11. 17. 10:33

출처 : http://javaking75.blog.me/220092064359



=> 기상청 RSS 안내 페이지 : 

=> 동네 예보 XML 서비스 요청 URL


=> 동네예보 XML 설명

※ XML 파싱은 jdom(http://www.jdom.org/)을 이용.

 [코드]

Colored By Color Scripter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package jdom.exam;

import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

public class RssReadExam {

    //http://www.kma.go.kr/wid/queryDFS.jsp?gridx=59&gridy=125
    private String rssFeed = "http://www.kma.go.kr/wid/queryDFS.jsp?gridx=%s&gridy=%s"; //주소
        
    /**
     *  테스트를 위한 메인메소드
     */

    public static void main(String[] args) {
        
        RssReadExam r = new RssReadExam();
        r.getTownForecast("59","125");        
        
    }  
    
    
    /**
     *  해당 좌표의 날씨 정보를 반환.
     */

    public List<Map<String, String>> getTownForecast(String x, String y) {        
        
               
        List<Map<String, String>> result = new ArrayList<Map<String, String>>();
                
        try {
        
            SAXBuilder parser = new SAXBuilder();        
            parser.setIgnoringElementContentWhitespace(true);
            
            //URL url = new URL(rssFeed);
            //InputSource is = new InputSource(url.openStream());
            //Document doc = parser.build(is);
            
            String url = String.format(rssFeed, x, y);
            Document doc = parser.build(url);
            Element root = doc.getRootElement();
            
            Element channel = root.getChild("body");
            List<Element> list = channel.getChildren("data");
           
            
           
            for (int i=0; i<list.size(); i++) {
              
                Element el = (Element)list.get(i);
                
                Map<String, String> data = new LinkedHashMap<String, String>();
                
                data.put("seq", el.getAttributeValue("seq"));   //48시간중 몇번째 인지 가르킴
                data.put("hour",el.getChildTextTrim("hour") );     //동네예보 3시간 단위 
                data.put("day",el.getChildTextTrim("day") );     //1번째날 (0: 오늘/1: 내일/2: 모레)
                data.put("temp",el.getChildTextTrim("temp") );    //현재 시간온도
                data.put("tmx",el.getChildTextTrim("tmx") );    //최고 온도 
                data.put("tmn",el.getChildTextTrim("tmn") );    //최저 온도
                data.put("sky",el.getChildTextTrim("sky") );    //하늘 상태코드 (1: 맑음, 2: 구름조금, 3:구름많음, 4:흐림)
                data.put("pty",el.getChildTextTrim("pty") );    //강수 상태코드 (0: 없음, 1: 비, 2: 비/눈, 3: 눈/비, 4: 눈)
                data.put("wfkor",el.getChildTextTrim("wfKor") ); //날씨 한국어
                data.put("wfEn",el.getChildTextTrim("wfEn") );      //날씨 영어
                data.put("pop",el.getChildTextTrim("pop") );     //강수 확률%
                data.put("r12",el.getChildTextTrim("r12") );     //12시간 예상 강수량
                data.put("s12",el.getChildTextTrim("s12") );     //12시간 예상 적설량
                data.put("ws",el.getChildTextTrim("ws") );         //풍속(m/s)
                data.put("wd",el.getChildTextTrim("wd") );         //풍향 (0~7:북, 북동, 동, 남동, 남, 남서, 서, 북서)
                data.put("wdKor",el.getChildTextTrim("wdKor") ); //풍향 한국어
                data.put("wdEn",el.getChildTextTrim("wdEn") );     //풍향 영어
                data.put("reh",el.getChildTextTrim("reh") );     //습도 %
                data.put("r06",el.getChildTextTrim("r06") );     //6시간 예상 강수량
                data.put("s06",el.getChildTextTrim("s06") );     //6시간 예상 적설량
                
                System.out.println(data);
                result.add(data);
            }

        } catch (JDOMException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        return result;
    }    
}

 

 

 

 

방식2 v140816

  

 [코드]

Colored By Color Scripter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package jdom.exam;

import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

public class RssReadExam2 {

    //http://www.kma.go.kr/wid/queryDFS.jsp?gridx=59&gridy=125
    private String rssFeed = "http://www.kma.go.kr/wid/queryDFS.jsp?gridx=%s&gridy=%s"; //주소
        
    /**
     *  테스트를 위한 메인메소드
     */

    public static void main(String[] args) {
        
        RssReadExam2 r = new RssReadExam2();
        r.getTownForecast("59","125");        
        
    }  
    
    
    /**
     *  해당 좌표의 날씨 정보를 반환.
     */

    public List<Map<String, String>> getTownForecast(String x, String y) {        
        
               
        List<Map<String, String>> result = new ArrayList<Map<String, String>>();
                
        try {        
            SAXBuilder parser = new SAXBuilder();        
            parser.setIgnoringElementContentWhitespace(true);
            
            //URL url = new URL(rssFeed);
            //InputSource is = new InputSource(url.openStream());
            //Document doc = parser.build(is);
            
            String url = String.format(rssFeed, x, y);
            Document doc = parser.build(url);
            Element root = doc.getRootElement();            
            Element channel = root.getChild("body");
            List<Element> list = channel.getChildren("data");
           
            for (int i=0; i<list.size(); i++) {
              
                Element el = (Element)list.get(i);
            
                String seq = el.getAttributeValue("seq");
                if(seq.equals("8")) break; //24시간 데이터만 추출
                
                Map<String, String> data = new LinkedHashMap<String, String>();
                
                data.put("x",x);
                data.put("y", y);
                data.put("seq",seq);
                
                //data요소의 자식요소들을 하나씩 꺼내서 저장 : (요소이름, 요소의 테스트노드)
                for(Element dataChild : el.getChildren()){ 
                    //<hour>3</hour>
                    //data.put("hour","3");
                    data.put(dataChild.getName(), dataChild.getTextTrim());
                }  
                System.out.println(data); //콘솔에 출력.
                result.add(data);
            }

        } catch (JDOMException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        return result;
    }    
}

 

 

 

'JAVA' 카테고리의 다른 글

이클립스 콘솔 버퍼 사이즈 제한 풀기  (0) 2015.11.25
자바 실행파일 만드는법  (0) 2015.01.06
- Eclipse 자주 쓰는 단축키 -  (0) 2014.07.13
for each문  (0) 2014.06.23
ConcurrentModificationException 설명  (0) 2014.06.23

자바 텍스트 한글자씩 읽기

JAVA/소스 2014. 10. 7. 19:58

import java.io.*;


public class Graph {


public static void main(String[] args) throws IOException {

// TODO Auto-generated method stub

try {

FileReader reader = new FileReader("sample1.inp");

int ch;

while((ch=reader.read())!=-1)

{

System.out.println((char)ch);

}

catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}



}


}



'JAVA > 소스' 카테고리의 다른 글

Java wav 재생  (0) 2015.01.10
자바 피보나치  (0) 2014.01.13
자바 팩토리얼  (0) 2014.01.13
자바 구조 예제  (0) 2014.01.13
Hello Java  (0) 2014.01.13

- Eclipse 자주 쓰는 단축키 -

JAVA 2014. 7. 13. 19:21

- Eclipse 자주 쓰는 단축키 -

출처 : http://littletrue.egloos.com/3987863

----- 실행 -----

Ctrl + F11 : 바로 전에 실행했던 클래스 실행

 

----- 소스 네비게이션 -----

Ctrl + 마우스커서(혹은 F3) : 클래스나 메소드 혹은 멤버를 상세하게 검색하고자 할때

Alt + Left, Alt + Right : 이후이전

Ctrl + O : 해당 소스의 메소드 리스트를 확인하려 할때

F4 : 클래스명을 선택하고 누르면 해당 클래스의 Hierarchy 를 볼 수 있다.


Alt + <-(->) : 이전(다음) 작업 화면

 

----- 문자열 찾기 -----

Ctrl + K : 찾고자 하는 문자열을 블럭으로 설정한 후 키를 누른다.

Ctrl + Shift + K : 역으로 찾고자 하는 문자열을 찾아감.

Ctrl + J : 입력하면서 찾을 수 있음.

Ctrl + Shift + J : 입력하면서 거꾸로 찾아갈 수 있음.

Ctrl + F : 기본적으로 찾기

 

----- 소스 편집 -----

Ctrl + Space : 입력 보조장치(Content Assistance) 강제 호출 => 입력하는 도중엔 언제라도 강제 호출 가능하다.

F2 : 컴파일 에러의 빨간줄에 커서를 갖져다가 이 키를 누르면 에러의 원인에 대한 힌트를 제공한다.

Ctrl + L : 원하는 소스 라인으로 이동

   로컬 히스토리 기능을 이용하면 이전에 편집했던 내용으로 변환이 가능하다.

Ctrl + Shift + Space : 메소드의 가로안에 커서를 놓고 이 키를 누르면 파라미터 타입 힌트를 볼 수 있다.

Ctrl + D : 한줄 삭제

Ctrl + W : 파일 닫기

Ctrl + I : 들여쓰기 자동 수정

Ctrl + Shift + / : 블록 주석(/* */)

Ctrl + Shift + \ : 블록 주석 제거

Ctrl + / : 여러줄이 한꺼번에 주석처리됨주석 해제하려면 반대로 하면 된다.

Alt + Up(Down) : 위(아래)줄과 바꾸기

Alt + Shift + 방향키 : 블록 선택하기

Ctrl + Shift + Space : 메소드의 파라메터 목록 보기

Ctrl + Shift + O : 자동으로 import 하기

Ctrl + Shift + F4 : 열린 파일 모두 닫기

Ctrl + M : 전체화면 토글

Ctrl + Alt + Up(Down) : 한줄(블럭복사

Ctrl + , or . : 다음 annotation(에러워닝북마크 가능)으로 점프

Ctrl + 1 : 퀵 픽스

F3 : 선언된 변수로 이동, 메소드 정의부로 이동

Ctrl + T : 하이어라키 �b업 창 띄우기(인터페이스 구현 클래스간 이동시 편리)

Ctrl + O : 메소드나 필드 이동하기

Ctrl + F6 : 창간 전환, UltraEdit  Editplus  Ctrl + Tab 과 같은 기능

 

----- 템플릿 사용 -----

sysout 입력한 후 Ctrl + Space 하면 System.out.println(); 으로 바뀐다.

try 입력한 후 Ctrl + Space 하면 try-catch 문이 완성된다.

for 입력한 후 Ctrl + Space 하면 여러가지 for 문을 완성할 수 있다.

템플릿을 수정하거나 추가하려면 환경설정/자바/편집기/템플릿 에서 할 수 있다.

 

----- 메소드 쉽게 생성하기 -----

클래스의 멤버를 일단 먼저 생성한다.

override 메소드를 구현하려면, 소스->메소드대체/구현 에서 해당 메소드를 체크한다.

기타 클래스의 멤버가 클래스의 오브젝트라면, 소스->위임메소드 생성에서 메소드를 선택한다.

 

----- organize import -----

자바파일을 여러개 선택한 후 소스->가져오기 체계화 해주면 모두 적용된다.

 

----- 소스 코드 형식 및 공통 주석 설정 -----

환경설정 -> 자바 -> 코드 스타일 -> 코드 포멧터 -> 가져오기 -> 프로파일.xml 을 불러다가 쓰면 된다.

또한 다수의 자바파일에 프로파일을 적용하려면 패키지 탐색기에서 패키지를 선택한 후 소스 -> 형식화를 선택하면 된다.

환경설정 -> 자바 -> 코드 스타일 -> 코드 템플리트 -> 가져오기 -> 템플리트.xml 을 불러다가 쓰면 된다.

 

----- 에디터 변환 -----

에디터가 여러 파일을 열어서 작업중일때 Ctrl + F6 키를 누르면 여러파일명이 나오고 F6키를 계속 누르면 아래로

Ctrl + Shift + F6 키를 누르면 위로 커서가 움직인다.

Ctrl + F7 : 뷰간 전환

Ctrl + F8 : 퍼스펙티브간 전환

F12 : 에디터로 포커스 위치

 

 

 

 

 

이클립스 자주쓰는 단축키 -

 

Ctrl + / : 주석 처리 - 한 라인/블록에 대해 주석 처리 (추가 및 제거)

Ctrl + L : 특정 라인으로 이동

Ctrl + F6 : Editor 창간의 이동

Ctrl + F7 : View 이동 메뉴

Ctrl + F8 : Prespectives 이동 메뉴

Ctrl + D : 한라인 삭제 - 커서가 위치한 라인 전체를 삭제 한다.

Ctrl + J : Incremental find 이클립스 하단 상태 표시줄에 Incremental find 라고 표시되어 한 글자자씩 누를 때 마다 코드내의 일치하는 문자열로 이동 , 다시 Ctrl + J 를 누르면 그 문자열과 일치 하는 부분을 위/아래 방향키로 탐색이 가능하다.

Ctrl + N : 새로운 파일 / 프로젝트 생성

Ctrl + 1 (빠른교정) - 문 맥에 맞게 소스 교정을 도와 준다변수를 선언하지 않고 썼을경우 빨간색 에러 표시되는데 이 단축키를 적용하면 변수에 맞는 선언이 추가 되도록 메뉴가 나타난다.

Ctrl + 0 : 클래스 구조를 트리로 보기

Ctrl + Space :  Cotent Assist - 소스 구문에서 사용 가능한 메소드멤버들의 리스트 메뉴를 보여준다.

Ctrl + PageUp , Ctrl + PageDown : Edit 창 좌우 이동 - Edit 창이 여러개 띄워져 있을경우 Edit 창간의 이동 한다.

Ctrl + Shift + Down : 클래스 내에서 다음 멤버로 이동

Ctrl + Shift + M : 해당 객체의 Import 문을 자동 생성 - import 추가 할 객체에 커서를 위치 시키고 단축키를 누르면 자동적으로 import 문이 생성

Ctrl + Shift + O : import 문을 자동 생성 - 전체 소스 구문에서 import 안된 클래스의 import 문을 생성해 준다.

Ctrl + Shift + G : 해당 메서드 / 필드를 쓰이는 곳을 표시 - View 영역에 Search 탭에 해당 메서드 / 필드를 사용하는 클래스를 표시 해준다.

Alt + Shift + R : Refactoring (이름변경) - Refactoing 으로 전체 소스에서 이름변경에 의한 참조 정보를 변경해 준다.

F3 : 선언 위치로 이동

F11 : 디버깅 시작

F8 : 디버깅 계속

F6 : 디버깅 한줄씩 실행(step over)

F5 : 디버깅 한줄씩 실행 함수 내부로 들어감 (step into)

F12 : Editor 창으로 이동 (Debugging 등 자동적으로 포커스가 이동 됐을경우 편리)

Alt + Up , Alt + Down : 줄 바꿈 - 해당 라인을 위 / 아래로 이동 시킨다.

Alt + Shift + S : Source Menu - 소스메뉴 (Import 추가 , Comment 추가 , 각종 Generator 메뉴가 나타난다.

Alt + Shift + Up : 블록설정 - 소스 코드를 블록 단위로 설정해 준다.

Alt + Shift + Down : 블록해제 - 소스 코드를 블록 단위로 해제한다.

Alt + Shift + J : 주석 생성 - 해당 메서드/클래스에 대한 주석을 템플릿을 생성해 준다.

sysout + (Ctrl + Space) : System.out.println() 문장 삽입 - 코드 템플릿을 이용해서 소스 구문을 추가

(Windows -> Preferences -> JAVA -> Editor -> Templates 에서 자주 쓰는 소스 구문을 추가시키면 <템플릿 이름> + (Ctrl + Space) 로 소스 문장을 완성 시킬 수 있다.)

Alt + Shift + Z : Surround With 메뉴 - try / catch 문이나 for , do , while 등을 해당 블록에 감싸주는 메뉴가 나타난다.

Ctrl + Shift + F : 코드 포맷팅 - 코드 내용을 문법 템플릿에 맞게 포맷팅(들여쓰기해준다.

Ctrl + Alt + Down한줄 복사후 아래에 복사 넣기 - Copy&Paste 대체하는 단축키커서가 위치한 라인을 복사해 밑줄에 생성해 준다.

Ctrl + Shift +X : 대문자로 변환

Ctrl + Shift + Y : 소문자로 변환

Ctrl + Shift + L : 모든 단축키의 내용을 표시해준다.

Ctrl + Shift + B : 현재 커서 라인에 Break point 설정

Ctrl + Shift + T : 클래스 찾기



for each문

JAVA 2014. 6. 23. 17:14

import java.util.ArrayList;

import java.util.Iterator;




public class Student {


/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

ArrayList<String> ar =new ArrayList<String>();


ar.add("냐옹이다옹");

ar.add("냐옹이다옹");

ar.add("냐옹이다옹");

//for문

for(Iterator<String>i=ar.iterator();i.hasNext();)

{

String temp=i.next();

System.out.print(temp);

}

//for_each문 

for(String tmp : ar)

{

System.out.print(tmp);

}

}


}

ConcurrentModificationException 설명

JAVA 2014. 6. 23. 17:04

출처 : http://suein1209.tistory.com/323


Iterator 객체는 하부 콜렉션 객체에 변경이 일어나 순차적 접근에 실패하면 ConcurrentModificationException 예외를 발생한다. 이처럼 순차적 접근에 실패하면 예외를 발생하도록 되어 있는 방식을 fail-fast라고 한다.

'JAVA' 카테고리의 다른 글

- Eclipse 자주 쓰는 단축키 -  (0) 2014.07.13
for each문  (0) 2014.06.23
Enumeration과 Iterator 차이  (0) 2014.06.23
자바 현재 날짜 구하기  (1) 2014.06.02
Collection 과 map 특징  (0) 2014.04.21

Enumeration과 Iterator 차이

JAVA 2014. 6. 23. 17:03

Enumeration,  Iterator  모르면 검색하면 설명 잘 나온다.


차이점 적는게 짧아서 차이점 하나만 적는다


 Iterator는 Fail-Fast 지원 해준다.


 Iterator를 이용해서 순차적으로 접근하고 있는 도중에 다른 곳으로 해당 컬렉션에 데이터를 추가하거나 삭제하는 등의 작업이 일어나면  ConcurrentModificationException이 발생하는 방식

'JAVA' 카테고리의 다른 글

for each문  (0) 2014.06.23
ConcurrentModificationException 설명  (0) 2014.06.23
자바 현재 날짜 구하기  (1) 2014.06.02
Collection 과 map 특징  (0) 2014.04.21
업캐스팅 다운 캐스팅  (0) 2014.03.12