2012-07-03 1 views
0

갑자기 java.lang.SecurityException : 침입 위반이 발생하여 장시간 실행되는 Java 프로세스에 문제가 발생했습니다. JVM이 실행되는 동안 봉인 된 jar를 겹쳐 쓰고 봉인 된 을 봉인했습니다.샘플을 생성하는 방법 java.lang.SecurityException : sealing violation : package .. 봉인되었습니다.

저는이 예외를 이해하고 있지만이 것을 재현하기 위해 인위적으로 봉인 된 예외를 만들려고 노력 중이며 작동하지 않습니다.

Manifest-Version: 1.0 
Sealed: true 

이 패키지는 클래스 같은 A1, A2, A3이 포함되어 있습니다 :

이 같은 META-INF/MANIFEST.MF 파일과 함께 'seal.jar'라는 이름의 jar 파일있다

package sealed; 

public class A1 
{ 
    public A1() 
    { 
    System.err.println("Created version 1.0 of " + this.getClass()); 
    } 
} 

import sealed.A1; 
import sealed.A2; 
import sealed.A3; 

public class SealingTest 
{ 
    public static void main(String[] args) { 

    int cnt=0; 

    try { 

     while(true) { 

     if(cnt%3==0) { 
      new A1(); 
     } 
     else if(cnt%3==1) { 
      new A2(); 
     } 
     else if(cnt%3==2) { 
      new A3(); 
     } 

     Thread.sleep(5000); 
     cnt++; 
     } 
    } 
    catch (Throwable t) { 
     t.printStackTrace(); 
    } 
    } 
} 
:

지금 같은 세 가지 클래스 만 인쇄 "버전 2.0" 세 번째 jar 파일 (run.jar)와 두 번째 항아리 씰-2.0.jar있어이 내용이

그리고 나는 생각 나는이 다음과 같이 밀폐 된 예외를 만들 것입니다 코드 :

C:\CodeStreet\FTP>java -cp run.jar;seal-1.0.jar SealingTest 
Created 1.0 of class sealed.A1  # now executing: copy seal-2.0.jar seal-1.0.jar 
Created 2.0 of class sealed.A2 
Created 2.0 of class sealed.A3 
Created 1.0 of class sealed.A1 

은 그래서 A1과 같은

인감-1.0.jar에서로드되지만, A2가 덮어 밀봉에서로드를 -1.0.jar.

첫 번째 클래스 (A1)이 seal-1.0.jar에서로드되고 두 번째 클래스 (A2)가 덮어 쓰기 된 파일에서로드되기 때문에 씰링 위반이 발생하지 않아야합니까?

+0

jar 패키지 씰링에 대한 간단한 자습서와 간단한 프로그램에서'SecurityException'을 얻는 방법을 읽으십시오. http://www.journaldev.com/1347/java-jar-sealing-packages – Pankaj

답변

0

다음을 시도하십시오

  • 밀봉-1.0.jar에서 A3.java을 제거 할 수 있지만 씰-2.0.jar에 보관;
  • 은 클래스 경로에 봉인 된 jar를 모두 가지고 테스트 프로그램을 실행합니다.

그러면 "SecurityException : sealing violation"이 발생합니다.

관련 문제