2010-07-27 5 views
2

나는`hello world! '를 출력하는 간단한 자바 응용 프로그램을 가지고 있습니다. 콘솔에. app.jar에 압축되어 있습니다. 항아리 구조 : -모든 컴퓨터에서 실행할 수있는 jar 파일을 만듭니다.

/Hello.class 주요 그을음에 println 방법

META-INF/MANIFEST.MF

매니페스트 파일 내 주요 클래스는 다음이 포함

Manifest-Version: 1.0 
Main-Class: main.Hello 

모든 것이 잘됩니다.

그러나 문제가 시작될 때보 다 의존성이 생기기 시작합니다. 확실하지는 않지만이 경우 모든 libs를 jar 파일에 넣어야한다고 생각합니다. META-INF/lib에 넣으면 manifest에 "Class-Path"를 지정해야합니다. "클래스 경로"가 어떻게 보일까요?

피씨 일부 유사한 질문이 있지만 적절한 답변을 찾지 못했습니다.

답변

1

필자는 애플리케이션과 모든 필요한 jar 파일을 패키징하기 위해 ANT 빌드 스크립트를 사용하는 경향이 있습니다. 나는 이것이 일단 제대로 작동하면 인생을 훨씬 쉽게 만들어 준다는 것을 알게됩니다. 이클립스를 사용하는 경우, 당신은 simplly 파일/내보내기 .../Runnable를 jar 파일을 할 수 있으며이 생성을 포함하여 당신을 위해 모든 것을 (할 것

<project default="create_run_jar" name="Create Runnable Jar for MyProject"> 
    <!--ANT 1.7 is required --> 
    <target name="create_run_jar"> 
     <jar destfile="my-runnable-jar.jar"> 
      <manifest> 
       <attribute name="Main-Class" value="my.MainClass"/> 
       <attribute name="Class-Path" value="."/> 
      </manifest> 
      <fileset dir="E:/path/to/my/project/bin"/> 
      <fileset dir="E:/path/to/my/project/classes"/> 
      <zipfileset src="E:/path/to/library/some-library.jar"/> 
     </jar> 
    </target> 
</project> 

참고 :

build.xml 파일이 같이 보입니다 ANT build.xml).

1

라이브러리를 압축하여 프로젝트에 통합하는 경우 특별한 것을 지정할 필요가 없습니다. 이렇게하면 "main"폴더가 있어야하고 외부 라이브러리로 org.apache.foo가 있으면 최상위 수준에 "org"폴더가 있습니다.

+0

매우 거친 내용이지만 확실하게 작동합니다. 라이브러리 항아리를 META-INF/lib 폴더에 결과 jar 파일에 포함시키고 싶습니다. 그래서 질문은 여전히 ​​열려 있습니다. – Jeriho

+0

는 나에게 좋은 습관처럼 들리지 않습니다. 나는 항아리를 항아리 속에 넣고 classpath에 추가하는 것이 더 낫다는 OP가 옳다고 생각합니다. –

관련 문제