> 기타 외부 패키지 > java

java: 자바 애플리케이션 실행

자바 가상 머신(JVM)을 사용하여 컴파일된 자바 애플리케이션(.jar 파일 또는 .class 파일)을 실행하는 명령어입니다. 다양한 옵션을 통해 메모리 설정, 클래스 경로 지정, 시스템 속성 정의 등을 제어할 수 있습니다.

개요

java 명령어는 자바 런타임 환경(JRE)의 핵심 구성 요소로, 자바 바이트코드를 실행합니다. 주로 .jar 파일이나 개별 .class 파일을 실행하는 데 사용되며, 개발 및 운영 환경에서 자바 기반의 모든 소프트웨어를 구동하는 데 필수적입니다.

주요 기능

  • 컴파일된 자바 애플리케이션(.jar, .class) 실행
  • JVM 메모리 및 성능 설정 제어
  • 클래스 경로(Classpath) 지정
  • 시스템 속성(System Properties) 정의

설치

대부분의 리눅스 배포판에는 자바가 기본으로 설치되어 있지 않습니다. OpenJDK를 설치하는 것이 일반적이며, 특정 버전(예: Java 11, Java 17)을 선택하여 설치할 수 있습니다.

Debian/Ubuntu (APT)

sudo apt update
sudo apt install default-jre

가장 최신 OpenJDK JRE를 설치합니다.

CentOS/RHEL/Fedora (YUM/DNF)

sudo yum install java-latest-openjdk

가장 최신 OpenJDK JRE를 설치합니다.

설치 확인

설치 후 다음 명령어로 자바 버전을 확인할 수 있습니다.

자바 버전 확인

java -version

주요 옵션

java 명령어는 애플리케이션 실행 방식과 JVM 동작을 제어하는 다양한 옵션을 제공합니다.

기본 실행

클래스 경로 및 모듈

JVM 메모리 설정

시스템 속성 및 기타

생성된 명령어:

명령어를 조합해 보세요.

설명:

`java` 명령어를 실행합니다.

위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.

사용 예시

자바 애플리케이션을 실행하는 다양한 시나리오입니다.

JAR 파일 실행

java -jar myapp.jar

실행 가능한 `myapp.jar` 파일을 실행합니다.

클래스 파일 실행

java MyMainClass

`MyMainClass.class` 파일을 실행합니다. 현재 디렉토리가 클래스 경로에 포함되어 있다고 가정합니다.

클래스 경로 지정하여 실행

java -cp "./lib/*:." com.example.Main

`lib` 디렉토리의 모든 JAR 파일과 현재 디렉토리의 클래스를 포함하여 `com.example.Main` 클래스를 실행합니다.

최대 힙 메모리 설정

java -Xmx2g -jar myapp.jar

JVM의 최대 힙 메모리를 2GB로 설정하여 `myapp.jar`을 실행합니다.

시스템 속성 설정

java -Dapp.env=production -jar myapp.jar

`myapp.jar`을 실행하면서 `app.env` 속성을 `production`으로 설정합니다.

모듈 실행 (Java 9+)

java --module-path /path/to/modules --module mymodule/com.example.Main

`mymodule` 내의 `com.example.Main` 클래스를 실행합니다.

팁 & 주의사항

자바 애플리케이션 실행 시 유용한 팁과 주의할 점입니다.

JAVA_HOME 환경 변수

많은 자바 기반 애플리케이션과 빌드 도구(Maven, Gradle 등)는 `JAVA_HOME` 환경 변수를 사용하여 자바 설치 경로를 찾습니다. 이 변수를 설정하는 것이 좋습니다.

  • 예시: export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 export PATH=$PATH:$JAVA_HOME/bin

메모리 설정 최적화

애플리케이션의 메모리 사용량에 따라 `-Xmx` (최대 힙) 및 `-Xms` (초기 힙) 옵션을 적절히 설정하는 것이 중요합니다. 너무 작으면 `OutOfMemoryError`가 발생하고, 너무 크면 시스템 리소스를 불필요하게 소모할 수 있습니다.

  • 권장 사항: 일반적으로 `-Xms`를 `-Xmx`의 1/4 ~ 1/2 정도로 설정하여 힙 확장을 줄이는 것이 성능에 도움이 될 수 있습니다.

클래스 경로 문제 해결

`ClassNotFoundException`이나 `NoClassDefFoundError`가 발생하면 `-cp` 또는 `-classpath` 옵션에 올바른 경로가 지정되었는지 확인해야 합니다. JAR 파일 내의 클래스를 포함하려면 JAR 파일 자체를 클래스 경로에 추가해야 합니다.

  • : 와일드카드(`*`)를 사용하여 디렉토리 내의 모든 JAR 파일을 클래스 경로에 추가할 수 있습니다 (예: `java -cp "lib/*" MyMainClass`).

여러 자바 버전 관리

시스템에 여러 버전의 자바가 설치되어 있을 경우, `update-alternatives` 명령어를 사용하여 기본 자바 버전을 설정하거나, `JAVA_HOME`을 특정 버전으로 지정하여 사용할 수 있습니다.

  • 예시 (Debian/Ubuntu): sudo update-alternatives --config java

동일 카테고리 명령어