.java 파일에서 JAR을 어떻게 만드나요?


87

단일 프레임 을 가진 Java 응용 프로그램 (프로젝트가있는 응용 프로그램이 아니라 프로젝트 내의 응용 프로그램, .java )을 사용하여 간단한 프로그램을 작성했습니다 . 두 파일 모두 .java 이므로 JAR에 필요한 매니페스트를 작성할 수 없습니다 .

MyApp.java는 , 패키지와 클래스처럼 수입 한 후 공용 클래스를 시작 MyApp하고 주요 기능을 가지고 있지만, 여전히 된 .java 파일입니다! 도움이된다면 JDeveloper 11g로 작성하고 있습니다.

이 파일에서 JAR을 만드는 방법에 대한 아이디어가 있습니까?


1
나는이 같은 ANT 또는 메이븐 등의 포장 도구를 사용하여 훨씬 쉽게 달성 할 수 있다고 생각
Churk

척과 동의합니다. ANT를보세요. IDE는 개발에 적합하지만 작동 방식을 이해해야합니다. java 파일은 javac를 통해 .class 파일로 컴파일되며, 그 후 .class 파일은 jar 명령을 사용하여 jar로 패키징 할 수 있습니다. (Ant는이를 수행하기위한 작업을 가지고 있으며, 심지어 jdeveloper는이를 수행하기위한 일부 마법사를 가지고 있습니다).
BigMike 2012 년

JDeveloper 자체에는 jar 파일을 생성 할 수있는 기능이 있어야합니다. 빠른 Google 검색이 여기에 하우투와 함께 나타납니다. tompeez.wordpress.com/2011/06/01/…
stolzem

1
질문을 명확히 할 수 있습니까?
Romain Hippeau

소스 디렉토리 및 실행 명령로 이동 - *의 .class JarName.jar CVF javac의 * 된 .java && 항아리
번쩍 거리는

답변:


102

명령 프롬프트를 엽니 다.

.java 파일이있는 디렉토리로 이동하십시오.

디렉터리 빌드 만들기

명령 줄에서 Java 컴파일 실행

javac -d ./build *.java

오류가 없으면 빌드 디렉토리에 클래스 트리가 있어야합니다.

빌드 디렉토리로 이동하고

jar cvf YourJar.jar *

매니페스트 검사 jar 명령 줄 스위치 추가


명령 줄에서 컴파일을 시도했지만 오류가 발생합니다. Frame1.java:23 : package oracle.jdeveloper.layout does not exist 어떻게 해결합니까? 죄송합니다 초보자 질문에 대한 ...
user1303007

클래스에서 참조하는 모든 라이브러리를 참조하는 클래스 경로를 빌드해야합니다. jdeveloper 설치를 확인하면 몇 가지 ant 빌드 예제 (build.xml 파일)와 Oracle 사이트에서 ANT와 함께 jDeveloper를 사용하는 방법에 대한 몇 가지 좋은 자습서가 있어야합니다.
BigMike


1
자동으로 Main-Class를 manifest에 추가하는 옵션을 jar 명령에 추가했습니다 ... jar cfe Main.jar Main *(혼란
스럽지만

31

명령 줄로 간단히 :

javac MyApp.java
jar -cf myJar.jar MyApp.class

확실히 IDE는 명령 줄 터미널 사용을 피합니다.


11
위는 효과가 있었지만 .classmyApp 을 지정해야했습니다 . 그래서 그것은jar -cf myJar.jar myApp.class
Navigatron 2015-07-06

3
여기에서도 맞춤법 오류가 있으며 패키지 문이 없다고 가정합니다. 충분하지 않습니다.
Marquis of Lorne

14

Ok 이것이 내가 찾고 싶었던 해결책입니다. 대신 여기에 작성합니다.

먼저 .java 파일에 대해 정의 된 패키지에 해당하는 디렉토리 구조를 만듭니다. my.super.application이면 "my"디렉토리를 만들고 그 안에 "super"디렉토리를 만들고 그 안에 .java 파일 "App.java"를 만듭니다.

그런 다음 명령 줄에서 :

   javac -cp /path/to/lib1.jar:/path/to/lib2.jar path/to/my/super/App.java

위의 내용은 여러 라이브러리를 포함합니다. 만약 윈도우에서 ","를 사용하여 여러 파일을 분리하지 않으면 GNU / Linux에서 ":"를 사용하여 jar 파일을 생성합니다.

   jar -cvfe App.jar App my/app/

위는 App을 메인 클래스로 나타내는 해당 Manifest를 사용하여 애플리케이션을 생성합니다.

java 또는 jar 명령 줄 매개 변수를 사용하여 jar 파일에 필수 라이브러리를 포함 할 수 없습니다.

대신 다음을 수행 할 수 있습니다.

  1. jar 파일의 루트 폴더에 라이브러리를 수동으로 추출하십시오.
  2. Netbeans와 같은 IDE를 사용하고 nbproject / build-impl.xml의 post-jar 섹션에 규칙을 삽입하여 jar 내부의 라이브러리를 추출하십시오. 아래를 참조하십시오.
<target name="-post-jar">
        <!-- Empty placeholder for easier customization. -->
        <!-- You can override this target in the ../build.xml file. -->
  <jar jarfile="${dist.jar}" update="true">  
            <zipfileset src="${dist.jar}" includes="**/*.class" />  
            <zipfileset src="${file.reference.iText-1.0.8.jar}" includes="**/*"/>
      <zipfileset src="${file.reference.itextpdf-3.2.1.jar}" includes="**/*"/>
  </jar>
    </target>

Netbeans IDE에 라이브러리를 추가 한 후 file.reference 이름은 project.properties 파일에서 찾을 수 있습니다.


9

종종 다음과 같이 매니페스트를 지정하고 싶을 것입니다.

jar -cvfm myJar.jar myManifest.txt myApp.class

"상세한 jarFilename manifestFilename 만들기"와 포함하려는 파일이 뒤 따릅니다. Verbose는 수행중인 작업에 대한 메시지를 인쇄하는 것을 의미합니다.

제공하는 매니페스트 파일의 이름은 무엇이든 될 수 있으며 jar자동으로 이름을 바꾸고 jar 파일 내의 올바른 디렉토리에 넣습니다.


6

이것은 터미널없이 IDE에서 직접 수행 할 수 있습니다. 예를 들어, Netbeans.

  1. 패키지로 별도의 프로젝트를 생성합니다 (프로젝트 생성-Java-Java 클래스 라이브러리).
  2. 거기에 .java 클래스를 넣으십시오.
  3. 이 프로젝트를 빌드하십시오.
  4. 프로젝트 폴더로 이동하여 빌드 및 dist 폴더를 찾으십시오.
  5. dist 폴더에서 .jar 파일을 찾으십시오.
  6. 다른 프로젝트를 가져 와서이 .jar 파일을 프로젝트 라이브러리에 추가하십시오.
  7. 가져 오기가 자동으로 수행되는 경우 이제이 라이브러리의 클래스와 해당 메서드를 코드에서 직접 참조 할 수 있습니다.

3

여기에 또 다른 멋진 방법이 있습니다.

$ ls | grep .java | xargs -I {} javac {} ; jar -cf myJar.jar *.class

ls | grep .java현재 디렉토리에서 모든 .java 파일 ( )을 가져와 .class ( xargs -I {} javac {}) 로 컴파일 한 다음 이전에 컴파일 된 클래스 ( jar -cf myJar.jar *.class) 에서 jar 파일을 만듭니다 .


2

Java 코드에서 JAR을 컴파일하는 가장 초보자 친화적 인 방법은 Netbeans 또는 Eclipse와 같은 IDE (통합 개발 환경, 기본적으로 개발을위한 사용자 친화적 인 소프트웨어)를 사용하는 것입니다.

  • IDE를 설치하고 설정합니다. 다음은 최신 버전의 Eclipse 입니다.
  • IDE에서 프로젝트를 만들고 프로젝트 폴더 안에 Java 파일을 넣습니다.
  • IDE에서 프로젝트를 선택하고 프로젝트를 JAR로 내 보냅니다. 내보낼 때 적절한 Java 파일이 선택되었는지 다시 확인하십시오.

명령 줄을 사용하면이 모든 작업을 항상 매우 쉽게 수행 할 수 있습니다. 다음과 같은 명령을 실행하기 전에 대상 파일과 동일한 디렉토리에 있는지 확인하십시오.

javac YourApp.java
jar -cf YourJar.jar YourApp.class

... "YourApp"및 "YourJar"를 각각 파일의 적절한 이름으로 변경합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.