2013-06-30 5 views
0

sealed 속성을 true로 설정하여 jar 파일에서 패키지를 봉인하는 것이 가능하지만 매니페스트의 클래스 항목에서 동일한 작업을 수행 할 수 있습니까?jar 파일의 클래스를 봉인 할 수 있습니까?

Boot.class가 존재하거나 패키지에 대해서만 봉인 된 경우이 봉인 된 속성이 작동합니까?

예 : 그것은 클래스를 밀봉 어떤 이해가되지 않습니다

 
Manifest-Version: 1.0 

Name: com/myCompany/randompackage/Boot.class 
Sealed: true 
+1

특정 클래스를 봉인하여 * 달성하고자하는 것은 무엇입니까? –

+0

http://docs.oracle.com/javase/tutorial/deployment/jar/sealman.html –

+0

이 기사를 읽었을뿐 패키지를 봉인하는 방법을 보여 주므로 클래스 항목이 가능한지 궁금합니다. – user2352835

답변

6

. 패키지 만 보호해야하기 때문에 패키지 만 봉인 할 수 있습니다. 한 클래스의 내용을 두 개의 파일에 분산시킬 수 없으므로 클래스를 보호 할 필요가 없습니다. 하나의 패키지 클래스를 두 개의 JAR에 분산시키는 것만 가능합니다. 그리고 씰링은 이것을 방지하는 것을 의미합니다. 기본값이 아니더라도 기본값으로 설정하는 것이 좋습니다.

앨리스 두 클래스 alice.Dataalice.Work을 포함 alice라는 패키지를 작성합니다. Data 클래스에는 변경할 수없는 몇 가지 변수가 들어 있습니다. 그렇지 않으면 Work 클래스의 코드가 실패 할 수 있습니다. Alice는 Work 클래스가 데이터에 액세스해야하기 때문에 Data 클래스를 패키지 private로 선언합니다. 이제 그녀는 패키지의 두 클래스를 alice.jar이라는 JAR 파일에 넣고 JAR 파일을 Bob에게 제공합니다.

그러나 앨리스가 이미 다른 작업을하기 때문에 Bob에게 더 많은 작업이 필요하며 Mallory에 다른 클래스를 작성하라고 요청합니다. 따라서 Mallory는 mallory이라는 패키지를 작성하고 mallory.Work이라는 필수 클래스를 구현합니다. 그러나 Mallory는 부러워서 Alice를 불신하려고하고 alice.Anger이라는 또 다른 클래스를 씁니다. 그리고 두 클래스를 mallory.jar이라는 JAR 파일에 넣고 JAR 파일을 Bob에게 보냅니다.

밥은 모두 JAR 파일을 사용하고 mallory.jar에서 클래스 alice.Anger 패키지 alice에 개인 액세스 패키지와 alice.Data의 데이터를 방해했기 때문에, Alice's 코드 문제로 실행됩니다.

앨리스가 JAR을 봉인 한 경우 Mallory가 패키지에 속한 클래스를 alice에 속하게 할 수 없습니다. 패키지 alice이 들어있는 다른 JAR이 이미 있고 각 패키지가 하나의 JAR에 있어야하므로 Java는이 JAR을 거부합니다.

관련 문제