developer tip

.java에서 JAR을 만드는 방법

copycodes 2020. 11. 14. 10:45
반응형

.java에서 JAR을 만드는 방법


단일 프레임을 가진 Java 응용 프로그램 (프로젝트가있는 응용 프로그램이 아니라 프로젝트 내 응용 프로그램, .java)을 사용하여 간단한 프로그램을 작성했습니다. 두 파일 모두 .java이므로 JAR에 필요한 매니페스트를 작성할 수 없습니다. MyApp.java는 패키지가있는 클래스처럼 시작하여 공용 클래스 MyApp {을 가져오고 주요 기능을 갖지만 여전히 .java입니다! 도움이된다면 JDeveloper 11g로 작성하고 있습니다.

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


명령 프롬프트를 엽니 다.

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

디렉터리 빌드 만들기

명령 줄에서 Java 컴파일 실행

javac -d ./build *.java

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

빌드 디렉토리로 이동하고

jar cvf YourJar.jar *

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


명령 줄로 간단히 :

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

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


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 파일에서 찾을 수 있습니다.


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

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

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

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


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

  1. 패키지로 별도의 프로젝트를 생성합니다 (프로젝트 생성-Java-Java 클래스 라이브러리).
  2. 거기에 .java 클래스를 넣으십시오.
  3. Build this project.
  4. Go to your project folder and find build and dist folders there.
  5. Find .jar file in your dist folder.
  6. Get your other project and add this .jar file to project libraries.
  7. You can now reference classes from this library and its methods directly from code, if import is automatically done for you.

Here is another fancy way of doing this:

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

Which will grab all the .java files ( ls | grep .java ) from your current directory and compile them into .class (xargs -I {} javac {}) and then create the jar file from the previously compiled classes (jar -cf myJar.jar *.class).

참고URL : https://stackoverflow.com/questions/9941296/how-do-i-make-a-jar-from-a-java

반응형