명령 줄에서 Java 애플리케이션 실행

1. 개요

일반적으로 모든 의미있는 응용 프로그램에는 하나 이상의 JAR 파일이 종속성으로 포함됩니다. 그러나 JAR 파일 자체가 독립형 응용 프로그램 또는 웹 응용 프로그램을 나타내는 경우가 있습니다.

이 기사에서는 독립 실행 형 애플리케이션 시나리오에 초점을 맞출 것입니다. 이하에서는이를 JAR 애플리케이션이라고합니다.

이 튜토리얼에서는 먼저 JAR 애플리케이션을 만드는 방법을 배웁니다. 나중에 명령 줄 인수를 사용하거나 사용하지 않고 JAR 애플리케이션실행하는 방법을 배웁니다 .

2. JAR 응용 프로그램 만들기

JAR 파일에는 하나 이상의 기본 클래스가 포함될 수 있습니다. 각 기본 클래스는 응용 프로그램의 진입 점입니다 . 따라서 이론적으로 JAR 파일은 둘 이상의 애플리케이션을 포함 할 수 있지만 실행할 수 있으려면 적어도 하나의 기본 클래스를 포함해야합니다.

JAR 파일은 매니페스트 파일에 설정된 하나의 진입 점을 가질 수 있습니다 . 이 경우 JAR 파일은 실행 가능한 JAR입니다. 기본 클래스는 해당 JAR 파일에 포함되어야합니다.

우선, 클래스를 컴파일하고 매니페스트 파일로 실행 가능한 JAR을 만드는 방법에 대한 간단한 예를 살펴 보겠습니다.

$ javac com/baeldung/jarArguments/*.java $ jar cfm JarExample.jar ../resources/example_manifest.txt com/baeldung/jarArguments/*.class

실행 불가능한 JAR은 매니페스트 파일에 정의 된 Main-Class 가없는 단순한 JAR 파일입니다 . 나중에 살펴 보 겠지만 JAR 파일 자체에 포함 된 기본 클래스를 계속 실행할 수 있습니다.

매니페스트 파일없이 실행 불가능한 JAR을 만드는 방법은 다음과 같습니다.

$ jar cf JarExample2.jar com/baeldung/jarArguments/*.class

3. 자바 명령 줄 인수

다른 응용 프로그램과 마찬가지로 JAR 응용 프로그램은 0 인수를 포함하여 여러 인수를 허용합니다. 그것은 모두 응용 프로그램의 필요에 달려 있습니다.

이를 통해 사용자 는 응용 프로그램이 시작될 때 구성 정보지정할 수 있습니다 .

결과적으로 애플리케이션은 하드 코딩 된 값을 피할 수 있으며 여전히 다양한 사용 사례를 처리 할 수 ​​있습니다.

인수에는 모든 영숫자 문자, 유니 코드 문자 및 쉘에서 허용하는 일부 특수 문자 (예 : '@')가 포함될 수 있습니다.

인수는 하나 이상의 공백으로 구분됩니다 . 인수에 공백이 포함되어야하는 경우 공백은 따옴표로 묶어야합니다. 작은 따옴표 또는 큰 따옴표가 잘 작동합니다.

일반적으로 일반적인 Java 응용 프로그램의 경우 응용 프로그램을 호출 할 때 사용자가 클래스 이름 뒤에 명령 줄 인수를 입력합니다.

그러나 JAR 응용 프로그램의 경우 항상 그런 것은 아닙니다.

이미 논의했듯이 자바 메인 클래스의 진입 점은 메인 메소드입니다. 인수는 모두 문자열 과 같은 main 메소드에 전달되는 문자열 배열입니다.

즉, 응용 프로그램 내에서, 우리는의 요소로 변환 할 수 있습니다 말했다 문자열 기타와 같은 데이터 타입에 배열 문자 , INT , 두 번 , 자신의 래퍼 클래스, 또는 다른 적절한 유형을.

4. 인수 로 실행 가능한 JAR 실행

인수를 사용하여 실행 가능한 JAR 파일을 실행하기위한 기본 구문을 살펴 보겠습니다.

java -jar jar-file-name [args…]

이전에 생성 된 실행 가능한 JAR은 전달 된 인수를 인쇄하는 간단한 응용 프로그램입니다. 임의의 인수로 실행할 수 있습니다. 다음은 두 개의 인수가있는 예입니다.

$ java -jar JarExample.jar "arg 1" [email protected] 

콘솔에 다음과 같은 출력이 표시됩니다.

Hello Baeldung Reader in JarExample! There are 2 argument(s)! Argument(1):arg 1 Argument(2):[email protected] 

따라서 실행 가능한 JAR을 호출 할 때 명령 줄에 기본 클래스 이름을 지정할 필요가 없습니다 . JAR 파일 이름 뒤에 인수를 추가하기 만하면됩니다. 실행 가능한 JAR 파일 이름 뒤에 클래스 이름을 제공하면 실제 기본 클래스에 대한 첫 번째 인수가됩니다.

대부분의 경우 JAR 응용 프로그램은 실행 가능한 JAR입니다. 실행 가능한 JAR은 매니페스트 파일에 정의 된 최대 하나의 기본 클래스를 가질 수 있습니다.

결과적으로 동일한 실행 가능한 JAR 파일의 다른 응용 프로그램은 매니페스트 파일에 설정할 수 없지만 실행 불가능한 JAR의 경우와 마찬가지로 명령 줄에서 계속 실행할 수 있습니다. 다음 섹션에서 정확히 어떻게되는지 살펴 보겠습니다.

5. 인수를 사용하여 실행 불가능한 JAR 실행

실행 불가능한 JAR 파일에서 애플리케이션을 실행하려면 -jar 대신 -cp 옵션을 사용해야 합니다. 우리는 사용합니다 -cp 우리가 실행하려는 클래스 파일을 포함하는 JAR 파일을 지정하는 옵션 (클래스 경로에 대한 짧은) :

java -cp jar-file-name main-class-name [args…]

보시다시피이 경우에는 명령 줄에 기본 클래스 이름과 인수를 포함해야 합니다.

이전에 생성 된 실행 불가능한 JAR에는 동일한 단순 애플리케이션이 포함되어 있습니다. 0을 포함한 모든 인수로 실행할 수 있습니다. 다음은 두 개의 인수가있는 예입니다.

$ java -cp JarExample2.jar com.baeldung.jarArguments.JarExample "arg 1" [email protected]

그리고 위에서 본 것처럼 다음과 같은 출력이 표시됩니다.

Hello Baeldung Reader in JarExample! There are 2 argument(s)! Argument(1):arg 1 Argument(2):[email protected]

6. 결론

이 자습서에서는 인수를 사용하거나 사용하지 않고 명령 줄에서 JAR 응용 프로그램을 실행하는 두 가지 방법을 배웠습니다.

또한 인수에 공백과 특수 문자가 포함될 수 있음을 보여주었습니다 (셸에서 허용되는 경우).

항상 그렇듯이 예제 코드는 GitHub에서 사용할 수 있습니다.