수색…


소개

JShell은 JDK 9에 추가 된 Java 용 상호 작용 REPL입니다. 개발자는 표현식을 평가하고 클래스를 테스트하고 Java 언어로 실험 할 수 있습니다. jdk 9에 대한 조기 액세스는 다음에서 얻을 수 있습니다. http://jdk.java.net/9/

통사론

  • $ jshell - JShell REPL 시작하기
  • jshell> / <command> - 주어진 JShell 명령을 실행합니다.
  • jshell> / exit - JShell 종료
  • jshell> / help - JShell 명령 목록보기
  • jshell> <java_expression> - 주어진 Java 표현식을 평가합니다 (세미콜론은 선택 사항 임).
  • jshell> / vars OR / methods OR / types - 변수, 메소드 또는 클래스의 목록을 각각보십시오.
  • jshell> / open <file> - 파일을 셸의 입력으로 읽습니다.
  • jshell> / edit <identifier> - 세트 에디터에서 스 니펫 편집하기
  • jshell> / set editor <command> - / edit를 사용하여 스 니펫 편집에 사용할 명령 설정
  • jshell> / drop <식별자> - 스 니펫 삭제
  • jshell> / reset - JVM을 재설정하고 모든 스 니펫을 삭제합니다.

비고

JShell는 현재 (3 월 2017 년)을 조기 액세스 스냅 샷으로 다운로드 할 수있는 자바 (9) JDK 필요 jdk9.java.net을 . jshell 명령을 실행할 때 Unable to locate an executable 시작하는 오류가 발생하면 JAVA_HOME 이 올바르게 설정되어 있는지 확인하십시오.

기본 수입

다음 패키지는 JShell을 시작할 때 자동으로 가져옵니다.

import java.io.*
import java.math.*
import java.net.*
import java.nio.file.*
import java.util.*
import java.util.concurrent.*
import java.util.function.*
import java.util.prefs.*
import java.util.regex.*
import java.util.stream.*

JShell 시작 및 종료

JShell 시작하기

JShell을 시작하기 전에 JAVA_HOME 환경 변수가 JDK 9 설치를 가리키는 지 확인하십시오. JShell을 시작하려면 다음 명령을 실행하십시오.

$ jshell

모든 것이 잘되면 jshell> 프롬프트가 보일 것입니다.

JShell 종료하기

JShell을 종료하려면 JShell 프롬프트에서 다음 명령을 실행하십시오.

jshell> /exit

표현식

JShell에서는 세미콜론을 사용하거나 사용하지 않고 Java 표현식을 평가할 수 있습니다. 이것들은 기본적인 표현과 문장에서 더 복잡한 것에 이르기까지 다양합니다 :

jshell> 4+2
jshell> System.out.printf("I am %d years old.\n", 421)

루프와 조건부도 괜찮습니다.

jshell> for (int i = 0; i<3; i++) {
   ...> System.out.println(i);
   ...> }

블록 내의 표현식에는 세미콜론이 있어야 한다는 점에 유의 해야합니다.

변수

JShell 내에서 지역 변수를 선언 할 수 있습니다.

jshell> String s = "hi"
jshell> int i = s.length

변수는 다른 유형으로 다시 선언 할 수 있습니다. 이것은 JShell에서 완벽하게 유효합니다.

jshell> String var = "hi"
jshell> int var = 3

변수 목록을 보려면 JShell 프롬프트에서 /vars 를 입력하십시오.

메소드와 클래스

JShell에서 메서드와 클래스를 정의 할 수 있습니다.

jshell> void speak() {
   ...> System.out.println("hello");
   ...> }

jshell> class MyClass {
   ...> void doNothing() {}
   ...> }

액세스 수정자는 필요하지 않습니다. 다른 블록과 마찬가지로 메소드 본문 내부에는 세미콜론이 필요합니다. 변수와 마찬가지로 메서드와 클래스를 다시 정의 할 수 있습니다. 메소드 또는 클래스 목록을 보려면 JShell 프롬프트에서 /methods 또는 /types 를 각각 입력하십시오.

스 니펫 편집

JShell에서 사용되는 코드의 기본 단위는 스 니펫 또는 소스 항목 입니다. 지역 변수를 선언하거나 로컬 메소드 나 클래스를 정의 할 때마다 변수 / 메소드 / 클래스의 식별자 인 이름을 가진 스 니펫을 만듭니다. 언제든지 /edit 명령으로 만든 스 니펫을 편집 할 수 있습니다. 예를 들어, 하나의 메소드, bar Foo 클래스를 생성했다고 가정 해 봅시다.

jshell> class Foo {
   ...> void bar() {
   ...> }
   ...> }

자, 내 방법의 몸을 채우고 싶습니다. 전체 클래스를 다시 작성하지 않고 편집 할 수 있습니다.

jshell> /edit Foo

기본적으로 스윙 편집기는 가능한 가장 기본적인 기능을 제공합니다. 그러나 JShell에서 사용하는 편집기는 변경할 수 있습니다.

jshell> /set editor emacs
jshell> /set editor vi
jshell> /set editor nano
jshell> /set editor -default

스 니펫의 새 버전에 구문 오류가있는 경우 저장하지 못할 수 있습니다. 마찬가지로 스 니펫은 원래 선언 / 정의가 구문 상 올바르다면 작성됩니다. 다음은 작동하지 않습니다.

jshell> String st = String 3
//error omitted
jshell> /edit st
|  No such snippet: st

그러나 코드가 일치하지 않는 컴파일 타임 오류 (예 : 불일치 유형)에도 불구하고 코드 조각을 컴파일하고 편집 할 수 있습니다. 다음과 같이 작동합니다.

jshell> int i = "hello"
//error omitted
jshell> /edit i

마지막으로 스 니펫은 /drop 명령을 사용하여 삭제할 수 있습니다.

jshell> int i = 13
jshell> /drop i
jshell> System.out.println(i)
|  Error:
|  cannot find symbol
|    symbol:   variable i
|  System.out.println(i)
|

모든 스 니펫을 삭제하여 JVM 상태를 \reset 하려면 \reset 사용하십시오.

jshell> int i = 2

jshell> String s = "hi"

jshell> /reset
|  Resetting state.

jshell> i
|  Error:
|  cannot find symbol
|    symbol:   variable i
|  i
|  ^

jshell> s
|  Error:
|  cannot find symbol
|    symbol:   variable s
|  s
|  ^


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow