2010-02-18 3 views
1

프로젝트에 필요한 클래스 파일이 거의 없습니다. 적절한 폴더 구조로 소스 폴더 자체에 추가했습니다. 내 제한 사항은 모든 종속 클래스가있는 단일 jar 파일을 제공해야한다는 것입니다. 실행 가능한 jar 파일이 될 수 없습니다.외부 클래스를 JAR - Eclipse로 내보내기

이제 제가 직면 한 문제는 jar 파일을 내보내려면 eclipse에서 내보내기를 선택했을 때 원본 폴더에 추가 한 클래스 파일 (.class)을 가져 오지 못했습니다. 패키지 탐색기에 나열되지도 않습니다. 어떻게 이것을 달성 할 수 있습니까? 모든 내보내기 설정을 수정해야합니까? 이

project 
    src 
     com 
     test 
      file1.java 
      file2.java 
      external 
      class1.class 
      class2.class 

지금 내 소스 파일과 나 자신 모두가 항아리에 내보낼 추가 한 클래스 파일을 생성 된 클래스를 원하는처럼 pricise 예정

, 내 프로젝트입니다.

+0

가능한 복제본 [큰 항아리에 모든 항아리 종속성을 패키징 할 수 있습니까?] (http : // stackoverflow.com/questions/1059851/package-all-the-jar-depend-in-one-big-jar) – finnw

답변

0

먼저 패키지를 나타내는 각각의 디렉토리에없는 경우 클래스가 작동 할 수 있는지 확신 할 수 없습니다.

e.e.

project 
    src 
     com 
     test 
      file1.java 
      file2.java 
      external 
      org 
       extproject 
       subpackage 
        class1.class 
        class2.class 

다음, 나는 오히려 그 클래스의 루트 디렉토리를 참조하는 linked folder 추가하고 항아리에 프로젝트를 내보낼 때 해당 폴더를 선택하려고합니다.

project 
    src 
     com 
     test 
      file1.java 
      file2.java 
    org (linked to c:/another/path/to/ext/project/classes) 
     extproject 
     subpackage 
      class1.class 
      class2.class 
0

고객에게 제공해야하는 응용 프로그램을 구현할 때마다 명령 줄에서 배포 빌드를위한 일종의 빌드 스크립트가 포함됩니다. 예를 들어, Ant "build.xml"파일, Maven "pom.xml"파일 또는 심지어 Makefile. 특정 상황을 처리하기 위해 스크립트에는 모든 관련 클래스를 임시 디렉토리 트리로 모으고 배포 트리에서 배포 JAR 파일을 작성하는 단계가 포함됩니다.

프로덕션 빌드를 수행 할 때 일부 IDE의 변경 사항에 의존하고 싶지 않습니다.

0

저는 Maven과 Maven Assembly Plugin을 사용할 것입니다. 이로 인해 의존성이있는 jar를 만들거나 실행 가능한 jar를 만드는 것이 정말 쉽습니다.

단점은 메이븐을 최대한 활용하는 방법을 배우는 데 약간의 시간이 걸린다는 점입니다. 그러나 일단 프로젝트를 변경하면 훨씬 단순 해집니다. Eclipse를 사용하면서이 플러그인을 추천 할 수 있습니다 : M2 Eclipse Plugin

0

src 폴더는 일반적으로 .class 파일을 유지하는 데 사용되지 않습니다. Eclipse는 이미 .class 파일을 빌드하고 jar 파일을 작성합니다. 따라서 외부 .class 파일을 프로젝트의 "lib 또는 something else"폴더에 추가 할 수 있습니다. 그런 다음 프로젝트를 빌드하고 jar 파일을 내 보냅니다. jar 파일에 lib 또는 다른 이름의 폴더와 외부 .class 파일이 포함되어 있음을 알 수 있습니다.

2

어쩌면 export Runnable JAR file이 필요합니까?

편집 : 많은 의존성이있는 경우 jar shrinker/obfuscator가 가장 친한 친구입니다. Proguard 또는 yGuard을 참조하십시오. Proguard의 경우 Eclipse plugin이 있습니다. 또는 Ant를 사용하여 수동으로 둘 중 하나를 통합 할 수 있습니다.

+0

예. 이것은 클래스 파일과 별도로 많은 라이브러리가 참조되지 않은 경우 고려할 옵션입니다. –

+0

도움이 될만한 obfuscator 정보를 포함하는 수정 된 답변입니다. – thSoft

+0

감사합니다. 도움이됩니다. –

관련 문제