명령 줄에서 JAR 파일을 실행하고 클래스 경로를 지정합니다.
JAR 파일을 컴파일 하고 매니페스트에 Main-Class를 지정했습니다 (Eclipse Export 기능 사용). 내 종속성은 모두 레이블이 지정된 디렉토리에 lib
있습니다. lib/*
클래스 경로로를 사용해야 함을 지정하는 동안 JAR 파일을 실행하는 방법에 대한 직접적인 대답을 얻을 수없는 것 같습니다 .
난 노력 했어:
]$ java -jar -cp .:lib/* MyJar.jar
]$ java -cp .:lib/* -jar MyJar.jar
]$ java -cp .:lib/* com.somepackage.subpackage.Main
기타...
각각 다음과 같은 오류가 발생합니다.
Error: Could not find or load main class ....
또는 NoClassDefFoundError
라이브러리를 찾을 수 없음을 나타냅니다.
심지어 JAR 파일을 다시 만들고 lib
디렉토리와 내용을 포함 했지만 여전히 주사위가 없습니다.
명령 줄에서 JAR 파일을 실행하고 사용할 클래스 경로를 지정하려면 어떻게해야합니까?
지정 -jar
하면 -cp
매개 변수가 무시됩니다.
에서 문서 :
이 옵션을 사용하는 경우 JAR 파일은 모든 사용자 클래스의 소스이며 다른 사용자 클래스 경로 설정은 무시됩니다.
또한 필요한 jar 파일을 다른 jar 파일에 "포함"할 수 없습니다 (그 내용을 추출하고 .class 파일을 jar 파일에 넣어야합니다).
두 가지 옵션이 있습니다.
lib
디렉토리의 모든 jar 파일을 매니페스트에 포함 (상대 경로를 사용할 수 있음)- 다음을 사용하여 명령 줄에서 jar를 포함한 모든 것을 지정 합니다
-cp
.
java -cp MyJar.jar:lib/* com.somepackage.subpackage.Main
jar 파일을 실행하고 다음과 같이 클래스 경로를 지정합니다.
java -cp <jar_name.jar:libs/*> com.test.App
jar_name.jar
실행하려는 JAR의 전체 이름입니다.
libs/*
종속성 JAR의 경로입니다.
com.test.App
main(String[])
메소드 가있는 JAR에서 클래스의 완전한 이름입니다.
jar 및 종속 jar에는 실행 권한이 있어야합니다.
유닉스 쉘에서 다음을 수행 할 수 있습니다.
java -cp MyJar.jar:lib/* com.somepackage.subpackage.Main
Windows PowerShell에서 다음을 수행 할 수 있습니다.
java -cp "MyJar.jar;lib\*" com.somepackage.subpackage.Main
또는 원하는 경우 매니페스트를 사용하여 클래스 경로 및 기본 클래스를 -cp
지정하면 기본 클래스 를 사용 하거나 지정할 필요가 없습니다 . 귀하의 경우에는 다음과 같은 줄이 포함됩니다.
Main-Class: com.test.App
Class-Path: lib/one.jar lib/two.jar
안타깝게도 매니페스트에서 각 jar의 철자를 입력해야합니다 (한 번만 수행하는 것만 큼 큰 문제가 아닙니다. 스크립트를 사용하여 파일을 빌드하거나 ANT, Maven 또는 Gradle과 같은 빌드 도구를 사용할 수 있습니다). 그리고 참조는 .NET Framework를 실행하는 상대 또는 절대 디렉토리 여야합니다 java -jar MyJar.jar
.
그런 다음
java -jar MyJar.jar
'programing tip' 카테고리의 다른 글
왜 float 값을 템플릿 매개 변수로 사용할 수 없습니까? (0) | 2020.08.13 |
---|---|
잘못된 형식의 숫자 값이 있습니다. (0) | 2020.08.13 |
Maven을 사용하지 않고 Spring Framework jar를 어디에서 다운로드 할 수 있습니까? (0) | 2020.08.13 |
Create-React-App 기반 프로젝트에 글꼴을 추가하는 방법은 무엇입니까? (0) | 2020.08.13 |
Oracle SQL Developer에서 변수를 어떻게 사용합니까? (0) | 2020.08.13 |