java.lang.SecurityException: нарушение запечатывания: не может запечатать пакет abcd: уже загружен - PullRequest
0 голосов
/ 10 октября 2018

Я новичок в 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>
...