2011-08-19 3 views
1

Java 파일 당 두 개의 클래스 파일이있는 jar 파일이 있습니다.각 클래스에는 jar 파일에 두 개의 클래스 파일이 있습니다.

자바 :

Foo.java 
Bar.java 

클래스 파일 : 나는 클래스 당 하나의 자바 파일이 있음을 확인했습니다

Foo.class 
Foo.class 
Bar.class 
Bar.class 

. 자바 파일은 내부 클래스를 포함하지 않는다. jar 파일을 생성하기 위해 ant jar-task를 사용하고 있습니다. 작업을 실행하기 전에 빌드 디렉토리에 클래스 당 하나의 클래스 파일 만 있습니다.

jar -tf jarfile.jar이있는 이중 클래스 파일을 보거나 zip 프로그램에서 볼 때. 파일 압축을 풀면 zip 프로그램이 기존 파일을 덮어 쓸지 묻습니다.

어떻게 이런 일이 발생할 수 있습니까?

+0

아마 두 번 소스를 컴파일 했습니까? – RoflcoptrException

+3

항아리를 추출하면 어떻게됩니까? – Stoney

+0

'Foo.java' 모양은 어떻게됩니까? – aioobe

답변

0

은 내가 문제를 발견 한 것 같아요.

<jar basedir="${build.class.dir}" jarfile="${dist.dir}/${subproject}.jar"> 
     <fileset dir="${build.class.dir}" /> 
    </jar> 

내가이 작업은 암시 파일 세트 형성하고 대부분의 특성 (디렉토리가 기본 디렉토리>이된다)과 중첩 등을 지원

개미 웹 사이트에서 읽을 때이 항아리의 작업입니다 , 및 요소.

따라서 태그 또는 기반 디렉토리가 불필요한 것으로 보입니다. 최소한 그것이 작동합니다. 파일 세트 태그를 주석 처리하면됩니다.

도움과 의견을 보내 주셔서 감사합니다.

3

개미 병 작업을 사용하고 있습니까? 그렇다면 동일한 jar 파일에서 중복 파일을 가장 확실히 얻을 수 있습니다. 중복 특성이이를 중지시키는 데 사용됩니다.

zip 형식을 사용하면 동일한 정규화 된 이름의 여러 파일이 단일 아카이브 내에 존재할 수 있습니다. . 이것은 의심의 여지가없는 사용자에게 여러 가지 문제를 일으키는 것으로 설명되어 있습니다. 이 문제를 방지하려면 복제 속성을 기본값 "add"보다 다른 값으로 설정해야합니다. 개미 매뉴얼 페이지에서

: http://ant.apache.org/manual/Tasks/jar.html

+1

duplicate = "fail"로 문제를 현지화 할 수있었습니다. 나는 duplicate = "preserve"를 사용할 수 있다는 것을 알고 있지만,이 상황이 어떻게 발생할 수 있는지 더 관심이 있습니다. – yottamoto

+0

다른 위치 (빌드 중에 생성 된)의 같은 파일을 jar 파일에 추가함으로써 문제가 발생했습니다. –

관련 문제