java.lang.ClassNotFoundException 가 throw 된다... - xrath.com 에서 번역됨

> ## 애플릿을 실행하면(자) `java.lang.ClassNotFoundException` 가 `com.ms.security` 패키지로 throw 된다

> ###
> 증상

> > 애플릿을 Sun JRE 를 사용한 브라우저로 실행하고 있는 경우,`ClassNotFoundException` 가 `com.ms.security` 패키지의 `ClassLoader` 로 throw 됩니다. 같은 애플릿이 Microsoft VM 에서는 실행할 수 있습니다.

> ### 원인

> > Microsoft VM 에서는, 애플릿이나 어플리케이션의 실행시에 시큐리티 정책에 액세스 하기 위해서, 독자적인 `com.ms.security` 패키지를 준비해 있습니다. 이 패키지는 Sun JRE 에서는 이용할 수 없기 때문에, 애플릿을 실행하면(자) `ClassNotFoundException` 가 throw 됩니다.

> ### 해결 방법

> > 애플릿의 원시 코드를 `com.ms.security` 패키지를 사용한 것으로부터,`java.security` 패키지의 같은 클래스를 사용한 것으로 이행합니다.
> > 예를 들어 다음의 애플릿에서는 `com.ms.security.PolicyEngine` 를 사용해, URL 에의 접속전에 네트워크 I/O 액세스권을 표명합니다.

> > > `public class AssertPermissionApplet extends java.applet.Applet
> > > {
> > > public void init()
> > > {
> > > try
> > > {
> > > // Assert permission on network I/O
> > > com.ms.security.PolicyEngine.assertPermission
> > > (com.ms.security.PermissionID.NETIO) ;
> > > java.net.URL url = new java.net.URL(
> > > "http://randomhost/randomfile ");
> > > .....
> > > } catch (java.net.MalformedURLException mue) {
> > > }
> > > catch (java.io.IOException ioe) {
> > > }
> > > } // init
> > > }`

> > Java 플랫폼에서는,`java.security.AccessController` 가 퍼미션의 assertion에 관해서 같은 기능을 가집니다. 다음에, 이행 후의 원시 코드를 나타냅니다.

> > > `public class AssertPermissionApplet extends java.applet.Applet
> > > {
> > > public void init()
> > > {
> > > try
> > > {
> > > // Assert permission on network I/O
> > > java.net.AccessController.checkPermission(new java.net.SocketPermission("randomhost:80", "connect, accept"));
> > > java.net.URL url = new java.net.URL(
> > > "http://randomhost/randomfile ");
> > > .....
> > > } catch (java.net.MalformedURLException mue) {
> > > }
> > > catch (java.io.IOException ioe) {
> > > }
> > > } // init
> > > }`

> > 시큐리티에 대한 자세한 것은, Java SE 의 API 문서를 참조해 주세요.

> ### 상세 정보

> Security 클래스를 참조해 주세요.