: 당신이 매니페스트 파일에 가고 싶지 않으면 그것은 당신이 또한 (아마도 그건 당신이하려고하는 기능)이처럼 발사 수는
za.ac.uj.csc2a
디렉토리
에 있어야합니다
jar cfe HelloWorld.jar HelloWorld HelloWorld.class
하지만 당신은 단지에 접두어로 패키지 이름과 전화 :
귀하의 항아리는 례 HelloWorld.jar 이름
java -jar za/ac/uj/csc2a/HelloWorld.jar
java -jar HelloWorld.jar
이어야합니다.
일반적으로 패키지를 사용하는 경우 클래스와 소스를 다른 디렉토리에 넣습니다.당신은 SRC 디렉토리로 이동 한 후 컴파일 할 수
proj
|-- src
| |-- za
| |-- ac
| `-- HelloWorld.java
|-- bin
|-- za
|-- ac
`-- HelloWorld.class
같은 일반적인 나무 같습니다
javac -d ../bin za/ac/HelloWorld.java
이 bin
디렉토리 구조를 생성합니다 (편의를 위해 패키지/경로 길이를 감소) (또는 자주 classes
) 필요한 경우
다음
, 올바른 디렉토리 구조로 모든 것을 항아리에, 당신은 proj
로 변경하고, 문제 :
jar cfe HelloWorld.jar za.ac.HelloWorld -C bin .
점은 전체 디렉토리를 나타냅니다.
jar -help
더 많은 옵션을 알려드립니다. 실행 가능한 항아리를 만들려면 매니페스트도 필요합니다. 그렇지 않으면 앱을 시작할 수 있습니다.
java -cp HelloWorld.jar za.ac.HelloWorld
(다시 경로가 짧아집니다).
디렉터리의 구조는 패키지 선언을 반영해야합니다. 파트 (za
)를 생략하고 다음 디렉토리 (ac
)로 들어갈 수 없습니다. 실행할 클래스는 za.ac.HelloWorld이므로 za/ac /에서 파일 시스템이나 항아리에 관계없이 검색됩니다.
올바른 기본 명령을 실행하는 방법을 배우면 쉽습니다. 그렇지 않으면 몇 년의 시행 착오를 겪을 것입니다.
java -jar
으로 시동 가능한 항아리에는 매니페스트가 필요합니다. 템플리트는 jar 명령에 의해 생성됩니다. 여기에 다음을 추가하십시오.
Main-Class: za.ac.HelloWorld
다음 빈 줄이 있습니다. 다시 : 패키지와 함께 전체 이름이 필요합니다. Main-Class
은 Mainclass로 쓸 수 없습니다. HelloWorld 뒤에는 .class 또는 .java가 없어야합니다. 일반적인 실수입니다! 그러나 알다시피, -e 스위치를 사용하여 기본 클래스를 지정할 수 있지만 다시 : 패키지 이름을 포함하십시오.
매니페스트 파일이있는 것처럼 보이지 않으므로'-jar'로 시작하면 예상대로 작동하지 않을 수 있습니다. – aioobe
그건 또 다른 문제입니다. –
@aioobe의 경우 jar 도구는 Main-Class가없는 기본 매니페스트를 만듭니다. 전자 스위치를 추가하면 항아리에 대한 진입 점을 설정할 수 있습니다. 따라서 사용자가 unknwn에 따라 jarring에 대한 내 진술은 다음과 같아야합니다.> jar cfe HelloWorld.jar za.ac.uj.csc2a.HelloWorld -C bin –