문제

Java 프로젝트를위한 표준 프로젝트 레이아웃이 있습니다.

project /
    src /
        source_file_1.java
        ...
        source_file_N.java
    build /
          classes /
              source_file_X.class
              ...
          jar /
              MyJar.jar
    lib /
          SomeLibrary.jar
          SomeOtherLibrary.jar

내가 알 수있는 한, 나는 ANT와 함께 프로젝트를 올바르게 구축하고 있습니다. 클래스가 필요한 라이브러리를 사용할 수 있도록 Manifest 파일에 클래스-패스 속성을 설정해야합니다.

build.xml의 다음과 관련된 정보

<target name="compile" depends="init">
    <javac srcdir="src" destdir="build\classes">
        <classpath id="classpath">
            <fileset dir="lib">
                <include name="**/*.jar" />
            </fileset>
        </classpath>
    </javac>
</target>

<target name="jar" depends="compile">
    <jar destfile="build\jar\MyJar.jar" basedir="build\classes" >
        <manifest>
            <attribute name="Built-By" value="${user.name}" />
        </manifest>
    </jar>
</target>

올바른 방향으로의 밀기는 감사합니다. 감사

도움이 되었습니까?

해결책

내 netbeans 생성 빌드 파일을보고, 나는이 스 니펫을 -do-jar-with-libraries 직무:

<manifest>
    <attribute name="Main-Class" value="${main.class}"/>
    <attribute name="Class-Path" value="${jar.classpath}"/>
</manifest>

다시 말해, 이미 가지고있는 매니페스트 작업에 다른 속성을 추가하면됩니다.

참조 작업 문서를 표시합니다.

다른 팁

라이브러리가 컴파일에서 JAR 파일 실행까지 위치를 변경하지 않는다고 가정하면 컴파일 대상 외부의 클래스 경로에 대한 경로 요소를 만들 수 있습니다.

<path id="compile.classpath">
    <fileset dir="lib" includes="**/*.jar"/>
</path>

그런 다음 현재 ClassPath 대신 Javac 작업 내부의 생성 된 경로를 사용할 수 있습니다.

<classpath refid="compile.classpath"/>

그런 다음 경로를 사용하여 ManifestClassPath를 설정할 수 있습니다.

<target name="jar" depends="compile">
    <manifestclasspath property="jar.classpath" jarfile="build\jar\MyJar.jar">
      <classpath refid="compile.classpath"/>
    </manifestclasspath>    
    <jar destfile="build\jar\MyJar.jar" basedir="build\classes" >
        <manifest>
            <attribute name="Built-By" value="${user.name}" />
            <attribute name="Class-Path" value="${jar.classpath}"/>
        </manifest>
    </jar>
</target> 

ManifestClassPath는 Manifest 파일에서 사용하기 위해 적절한 형식의 클래스 경로를 생성하며, 이는 72 자 후에 래핑해야합니다. 많은 JAR 파일이나 긴 경로가 포함 된 긴 클래스 경로는 ManifestClassPath 작업을 사용하지 않으면 올바르게 작동하지 않을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top