Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java 9 JShell에서 외부 라이브러리를 임포트하는 방법

JShell이란?

JShell은 Java 언어를 학습하고 코드 프로토타입을 빠르게 만들어 볼 수 있도록 Java 9부터 제공되는 대화형(인터랙티브) 도구입니다. JShell은 사용자가 입력한 명령을 즉시 평가하여 결과를 보여주는 방식으로 동작하며, 이는 REPL(Read-Evaluate-Print-Loop), 즉 읽고-평가하고-출력하는 반복 구조를 기반으로 합니다.

기본 임포트된 패키지 확인하기

JShell 세션이 시작되면 기본적으로 몇 가지 유용한 Java 패키지들이 자동으로 임포트됩니다. /imports 명령을 입력하면 현재 임포트된 모든 패키지 목록을 확인할 수 있습니다.

jshell> /imports
| 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.*
| import javax.mail.internet.InternetAddress

외부 라이브러리 임포트 시 발생하는 문제

JShell에서도 외부 라이브러리를 사용할 수 있습니다. 예를 들어 javax.mail.internet 패키지에 속한 InternetAddress 객체를 생성하고 싶다면, 먼저 해당 패키지를 임포트해야 합니다.

jshell> import javax.mail.internet.InternetAddress
| Error:
| package javax.mail.internet does not exist
| import javax.mail.internet.InternetAddress;
| ^---------------------------------^

그러나 위와 같이 단순히 클래스를 임포트하는 것만으로는 동작하지 않습니다. 그 이유는 해당 패키지가 클래스패스(classpath)에 존재하지 않아 JShell이 인식할 수 없기 때문입니다.

/env --class-path로 외부 JAR 추가하기

이 문제를 해결하려면 /env --class-path <jars, class files> 명령을 사용하여 필요한 JAR 파일이나 클래스 파일을 클래스패스에 추가해야 합니다.

jshell> /env --class-path \Users\user\mail-1.4.7.jar
| Setting new options and restoring state.

jshell> import javax.mail.internet.InternetAddress

클래스패스에 JAR 파일이 등록되면 새로운 옵션 설정과 함께 기존 세션 상태가 복원되며, 이후에는 오류 없이 정상적으로 패키지를 임포트할 수 있습니다.

객체 생성 및 실행 결과 확인

이제 클래스패스 설정이 완료되었으므로, 아래와 같이 InternetAddress 객체를 자유롭게 생성하고 사용할 수 있습니다.

jshell> InternetAddress from = new InternetAddress("a@a")
from ==> a@a

정리

JShell에서 외부 라이브러리를 사용하는 절차를 요약하면 다음과 같습니다.

1. /env --class-path 명령으로 필요한 JAR 파일을 클래스패스에 추가한다.
2. import 문으로 해당 패키지나 클래스를 임포트한다.
3. 임포트된 클래스를 사용하여 객체를 생성하고 코드를 테스트한다.

이 과정을 통해 JShell을 활용하면 외부 라이브러리 기반의 Java 코드도 손쉽게 실험하고 학습할 수 있습니다.