2016-06-23 3 views
7

Java 9JShell이라는 REPL을 JDK 배포판에 소개합니다. 어떤 응용 프로그램을 실행중인 JDK의 JShell에 연결하고 실행중인 응용 프로그램을 참조하는 명령을 실행할 수있는 방법이 있습니까? 예를 들어 일부 메소드를 실행하면 앱 코드, 객체 검사 등을 수행 할 수 있습니다.Java 9 REPL 앱 실행을위한 REPL

+0

다른 REPL에서 그렇게 할 수 있습니까? –

+2

아니요, 이것이 JShell의 목표는 아닙니다. 목표는 빠른 조종사에서 Java 문을 평가하도록하는 것입니다. JShell은 주변 환경을 제공하여 시간을 절약하고 주변 상황으로 응용 프로그램을 가져올 수는 없습니다. –

+1

@bigdestroyer 제가 언급 한 것을 제공하는 크래시 셸이 있습니다. http://www.crashub.org/ –

답변

4

JShell은 표준 Java 명령이 아니며 다른 명령입니다. 일단 쉘을 열면 Read Eval Print Loop에서 "간다". 일단 명령을 입력하면 쉘에 의해 읽혀 구문 분석되고 결과가 출력됩니다.

변수를 정의하고 클래스 경로에 클래스를 추가 할 수 있지만 적어도이 단계가 아니라 동일한 JVM이 아닌 응용 프로그램 또는 서버를 시작할 수 있다고 생각합니다. 클래스를 추가 할 수 있으므로 클래스를 인스턴스화 할 수 있지만 변수를 검사 할 수는 없습니다. 그러나 JShell 범위에서 인스턴스화 한 변수 (생성 한 객체는 공용 메서드와 변수에만 액세스하여 인쇄 할 수 있음)를 볼 수 있습니다.

JShell에는 다른 가능성을위한 길을 열어주는 api가있을 것으로 보입니다.

1

아니오, 쉽게 jshell을 사용하지 마십시오.

하지만 우리는 jshell 사용하지 않지만 어떤 REPL 자바 도구 있도록 나에게 질문을 바꿔 보자

이 그 실행을 참조 명령을 실행중인 자바 응용 프로그램에 대한 몇 가지 REPL 자바 도구를 연결하고 실행할 수있는 방법이다 앱. 예를 들어 일부 메소드를 실행하면 앱 코드, 객체 검사 등을 수행 할 수 있습니다.

https://github.com/lorenzoongithub/nudge4j

당신은 정확히 그

유일한주의해야 할 점은 자바 8

0

당신이 고려할 수 대체 옵션입니다 뭔가 BeanShell처럼을 허용 않습니다 nudge4j 살펴 보셔야합니다 (비록 BeanShell은 꽤 오래되었고 아마 사용되지 않을 것이다). 응용 프로그램 내부에서 BeanShell 콘솔을 실행하면 개체에 액세스하여 개체에 대한 메서드를 호출 할 수 있습니다. 몇 가지 아이디어는 JConsole 예를 참조하십시오.