Я новичок в Java, мне нужно создать две банки для разделения тестового кода и фактического кода,
Внутри папки a / b / c / d, есть 10 классов или файлов, 8 из нихнужно перейти к одному банку, а 2 из них - к другому банку. В этих двух классах мы расширяем один класс из других восьми классов.
В первом банке запечатанный code.jar долженбыть установленным в true, а в test.jar это не имеет значения. Поэтому для устранения этой проблемы я установил значение false.
При тестировании я получаю следующее исключение:
java.lang.SecurityException: sealing violation: can't seal package a..b.c.d: already loaded
IsЕсть способ решить эту проблему, расположение этих двух jar-файлов различно, поэтому путь к классам при тестировании обоих jar-файлов не будет одинаковым.
Цель, зависящая от этих двух jar-ов, имеет методу зависимость = ", testjar ".
<target name="codejar" description="Create codejar" depends="compile">
<jar destfile="${path2}/code.jar"
basedir="${dir.classes}"
includes="a/b/c/**" excludes="a/b/c/d/file1*.* ,a/b/c/d/file2*.*">
<manifest>
<attribute name="Sealed" value="true"/>
<attribute name="Class-Path" value="othecode.jar"/>
<attribute name="Main-Class" value="a.b.c.otherclass"/>
<attribute name="Specification-Title" value="${label}"/>
</manifest>
</jar>
</target>
<target name="testjar" description="Create test code jar" depends="compile">
<jar destfile="${path1}/test.jar" basedir="${dir.classes}" includes="a/b/c/d/file1*.*, a/b/c/d/file2*.*, file3.class, file4.class" >
<manifest>
<attribute name="Sealed" value="false"/>
<attribute name="Class-Path" value="code.jar"/>
</manifest>
</jar>
</target>