문제

내가 사용하여 Eclipse IDE 을 개발하고,컴파일과 실행 Java 프로젝트입니다.오늘같이 사용하는 java.io.Console 클래스를 관리하는 출력하고,더 중요한 것은,사용자 입력이 있습니다.

문제는 System.console()null 응용 프로그램이 실행되면"을 통해"Eclipse.Eclipse 프로그램을 실행에서 백그라운드 프로세스보다 최고 수준의 프로세스 콘솔 창 우리에 익숙합니다.

는 방법이 있을 강제로 이클립스를 실행하는 프로그램으로 최고 수준의 과정,또는 적어도 만드는 콘솔에서 JVM 인식?그렇지 않으면 나는 강제 병합적인 프로젝트에서 실행하는 명령줄 환경 외부 Eclipse.

도움이 되었습니까?

해결책

나는 가정을 원용할 수 있는 단계를 통해서 디버깅 Eclipse.실행할 수 있습니다 그냥 클래스 외부에서 설정하여 내장 클래스의 bin 디렉토리에 JRE 클래스 경로.

java -cp workspace\p1\bin;workspace\p2\bin foo.Main

디버깅할 수 있습니다 원격 사용하는 디버거와 이용 클래스 파일에 내장 된 프로젝트입니다.

이 예제에서는 일식 프로젝트 구조는 다음과 같습니다.

workspace\project\
                 \.classpath
                 \.project
                 \debug.bat
                 \bin\Main.class
                 \src\Main.java

1.시작하면 콘솔에서 JVM 디버깅 모드

디버그.bat 윈도우는 배치 파일을 실행해야 한다 외부에서 cmd.exe console.

@ECHO OFF
SET A_PORT=8787
SET A_DBG=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=%A_PORT%,server=y,suspend=y
java.exe %A_DBG% -cp .\bin Main

에서 인수를 디버깅 포트로 설정되었습니다 8787.이 일시 중단=y 인수를 알려줍니다 JVM 때까지 기다릴 디버거를 연결.

2.을 만들 디버그 시작 구성

Eclipse 에서 열린 디버그 대화 상자(실행>열어 디버그 대화)및 새로 생성 원격 Java 응용 프로그램 구성은 다음과 같은 설정:

  • 프로젝트: 프로젝트 이름
  • 연결 유형: 준(소켓 연결)
  • Host: localhost
  • 포트: 8787

3.디버깅

그래서,당신이해야 할 모든 당신이 원하는 모든 시간을 디버깅하는 응용 프로그램은 다음과 같습니다

  • 브레이크 포인트를 설정
  • 을 실행하는 배치 파일에서 콘솔
  • 시작 디버 구성

을 추적할 수 있습니다 이 문제에 버그 122429.작업할 수 있습니다 라운드 이 문제에의 응용 프로그램을 사용하여 추상화 계층을 설명 .

다른 팁

이는 해결 방법을 사용하는 사용하는 시스템입니다.서/시스템입니다.대한의 콘솔을 사용할 때 Eclipse.예를 들어,대신:

String line = System.console().readLine();

당신이 사용할 수 있습니다:

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String line = bufferedReader.readLine();

이유가 발생하기 때문에 이클립스를 실행하는 앱을 배경으로 처리되지 않고 최고 수준의 프로세스와 시스템 console.

을 구현할 수 있습니다 클래스는 자신입니다.예는 다음과 같습니다:

public class Console {
    BufferedReader br;
    PrintStream ps;

    public Console(){
        br = new BufferedReader(new InputStreamReader(System.in));
        ps = System.out;
    }

    public String readLine(String out){
        ps.format(out);
        try{
            return br.readLine();
        }catch(IOException e)
        {
            return null;
        }
    }
    public PrintStream format(String format, Object...objects){
        return ps.format(format, objects);
    }
}

을 발견에 대해 뭔가가 이것에 http://www.stupidjavatricks.com/?p=43 .

슬프게도,이후 콘솔은 최종적이,당신은 확장 할 수 없습을 만드는 래퍼 시스템입니다.에서 및 시스템입니다.는 않습니다.도 안 eclipse 콘솔하게 이용할 수 있습니다.일 eclipse 지 않은 연결이로 콘솔 아직...

나는 이유를 이해하고 싶지 않을텐데 다른 어떤 방법 콘솔에 다른 것보다 시스템입니다.콘솔,이 없는 세터,그러나지 않고 싶지 않은 사람을 재정의할 수 있는 클래스를 모의 시험 콘솔...

또 다른 옵션은 방법을 만들 수 있을 감싸는 두 가지 옵션을,그리고"fail"이상하는 시스템입니다.에서 방법을 때 콘솔을 사용할 수 없습니다.아래 예에서는 매우 기본적인할 수도 있습 따라 동일한 과정을 마무리 다른 방법 콘솔(readPassword,형식)으로 필요합니다.는 방법을 실행할 수 있습니다 그것은 행복하게 Eclipse&때의 배포를 얻 콘솔 기능(예를들면비밀번호 숨기)kicking in.

    private static String readLine(String prompt) {
        String line = null;
        Console c = System.console();
        if (c != null) {
             line = c.readLine(prompt);
        } else {
            System.out.print(prompt);
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
            try {
                 line = bufferedReader.readLine();
            } catch (IOException e) { 
                //Ignore    
            }
        }
        return line;
    }

멀리로 말할 수 있는 방법은 없을 얻는 콘솔에서 개체 Eclipse.나는 그냥 있는지 확인 콘솔!= null,다음 항아리고 그것을 실행하는 명령줄에서.

이 없는 것 같을 얻을 수있는 방법 java.io.콘솔에 객체를 실행하는 경우 응용 프로그램을 통해 Eclipse.명령줄 콘솔창이 열리지 않으로 응용 프로그램은 백그라운드 프로세스로 실행(배경을 Eclipse?).현재는 없는 이클립스 플러그인 이 문제를 처리하기 위해,사실 때문에 주로는 java.io.콘솔 최종 클래스입니다.

당신이 정말로 할 수있는 모든 테스트는 반환되는 콘솔에 대한 개체 null 진행합니다.

링크 제공하는 대안을 사용하는 시스템입니다.콘솔().중 하나를 사용하는 것입 BufferedReader 감싸 시스템입니다.에서 두 번째는 사용하의 스캐너 감싸 시스템입니다.습니다.

어느 쪽도 아니는 간결한 콘솔,하지만 모두에서 작업 eclipse 하지 않고도 리조트의 디버깅하는 어리석음!

말 Eclipse 작업 영역 C:\MyWorkspace, 를 만들 java 응용 프로그램 안에 maven 하위 프로젝트, 과 Java 기본 클래스입니다 com.mydomain.mypackage.MyClass.

이 경우에는 실행할 수 있습니다 당신의 주요 클래스를 사용하는 System.console() 에서 명령 라인:

java -cp C:\MyWorkspace\MyProject\target\classes com.mydomain.mypackage.MyClass

NB1:지 않는 경우에 maven 프로젝트를 확인 출력 폴더에서 프로젝트 속성|Java 구축 경로|소스입니다.되지 않을 수도 있습니다"target/클래스"

NB2:는 경우 그것은 maven 프로젝트,하지만 당신의 클래스에서는 src/시험/java,당신은 가능성이 있을 사용하"대상\테스트 수업"대신에"대상\classes"

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top