2012-01-24 16 views
0

数週間前にJavaの学習を始めましたが、今はジャップレットゲームを作成中です。Javaアプレットパーミッションが拒否され、セキュリティ例外が発生しました

私は、Mac OS Xのを使用していますが、私は、ブラウザでアプレットを実行しようとするたびに私はJAppletのが実行されますので、私はこの問題を解決するにはどうすればよい次の例外

java.lang.SecurityException: Permission denied: 

を取得しますか?ファイルはすべてローカルにあり、私はJAppletをブラウザでローカルに実行しています。

以下であるHTMLコード

<html> 
<head> 
    <title>Java Game!</title> 
</head> 
<body> 

    <applet code="/local/path/to/MainApplet.class" 
      width=500 
      height=500> 
    </applet> 

</body> 
</html> 

UPDATE:

以下は、完全なコンソール出力である:

Java.lang.SecurityException: Permission denied: 
file:/path/to/MainApplet.class 
    at sun.plugin2.applet.Applet2ClassLoader$1.run(Applet2ClassLoader.java:209) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:201) 
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Plugin2ClassLoader.java:249) 
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:179) 
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:160) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Plugin2ClassLoader.java:678) 
    at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:3045) 
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1497) 
    at java.lang.Thread.run(Thread.java:680) 
Exception: java.lang.SecurityException: Permission denied: file:/path/to/MainApplet.class 

更新#2

Windowsで同じコードを試しましたが、まったく問題はありませんでした。これはMac上でのみ、この例外、任意のアイデアを与えている?

+0

'パーミッションが拒否された後に来たビットは何だったの::'あなたは次のリンクを確認することができ、アプレットに署名するために

?あなたの質問に対する答えは、 "しないでください"、あるいは "署名された&信頼できるアプレットでのみ行う"かもしれません。それが何であるかを明らかにするまでは、どちらが言えるのかは分かりません。 –

+1

*「数週間前にJavaを学び始めましたが、今はジャッペレットゲームを作成しています」* Java GUIプログラミングを学ぶには、アプレットをコーディングするのは良い方法ではありません。 [JWS](http://stackoverflow.com/tags/java-web-start/info)を使用してリンクから起動された(例えば)JFrameよりも、開発とデプロイメントがかなり難しいです。 –

+0

@AndrewThompsonコースでは、私のアプリをアプレットとしてデプロイする必要があります。残念ながら、選択肢はありません。(私はQ. – zentenk

答えて

0

アプレットはインターネットから提供されるコンポーネントなので、Javaのセキュリティフレームワークは、書き込みやハードディスクからの読み取りなどのロカリソースにアクセスする場合にアプレットに署名する必要があります。 http://java.sun.com/developer/onlineTraining/Programming/JDCBook/signed.html

+0

署名なしでアプレットを実行することはできますか?私は開発の初期段階にあり、それを瓶に束ねて毎回署名することは大変です...また、アプレットは公表する目的ではなく、ちょうどグレーディング目的のために公開されません。 – zentenk

+0

@zentenk - ローカルファイルシステムを使用している場合、実際にはアプレット内のローカルファイルシステムを使用していますか、それとも最初にMainApplet.classにアクセスできないと不平を言いましたか?後者のように聞こえる。クラスがローカルにあり、htmlがローカルにある場合は、相対パスを試してください。私。パス/ to/localにhtmlファイルを置き、MainApplet.class(パスなし)を参照してください。 – James

+0

@Jamesはい、ローカルファイルシステムを使用しています。相対パスで参照すると、クラスファイルが見つからないというエラーが表示されます。私も777に権限を設定して、私はまだ同じ結果を得る。 – zentenk

関連する問題