0

テキストファイルを読み込んでそれに基づいて作成するように部分的に設計されたアプレットがあります。私のアプレットでは、これはファイルを読み取る「読み取り」メソッドとして持っているものです。

public void read (String file1) throws IOException
{
    str.removeAllElements (); // str is a global vector
    BufferedReader dia = new BufferedReader (new FileReader (file1));

    for (;;)
    {
        strc = dia.readLine ();
        if (strc == null)
            break;
        str.add (strc);
    }
}

これは、JVM を介して実行している場合は正常に機能しますが、オンラインにすると、同じサーバーとフォルダーでホストされているにもかかわらず、アクセスしたいファイルにアクセスできません。

私のアプレットの HTML は次のようになります。

<applet
codebase = "[the url that hosts my class and text files]"
code = "[my class file].class"
width = ###
height = ###>
</applet>

私が得ている特定のエラーは次のとおりです。

AccessControlException
access denied ("java.io.FilePermission" "dial1.txt" "read")

誰かが助けることができれば、それは素晴らしいことです!

4

2 に答える 2

1

ここでの本当の問題は、を使用していることだと思いjava.io.Fileます。サーバー/クライアントを今のところ脇に置いておくと、サンドボックスアプレットはFile-を確立できません。しかし、それを少し拡張するために、信頼できるアプレットは-を確立できますが、クライアントマシンFileのローカルドライブ上のファイルを指すものは1つだけです。 Aはサーバーを指すことはでき、そのようには機能しません。File

だからそれはにつながります。アプレットがリソースにアクセスするための適切な方法は、によるものURLです。Javaは、Jarsのクラスにアクセスする場合でも、URLを大量に使用します。

サンドボックス化されたアプレットは、それが展開されたサーバーを指すURLを確立できます。

そのURLを形成する方法について。URLは、コードベース(Jars /クラスの場所)またはドキュメントベース(HTMLの場所)を基準にして形成できます。

于 2012-06-17T06:04:54.050 に答える
0

アプレットは Web ブラウザー内で実行されます。したがって、アプレットをダウンロードしたユーザーのコンピューター上で。そのため、探しているファイルがユーザーのコンピューターに存在する場合でも、インターネットを閲覧しているユーザーへのファイル システム アクセス権がないため、それらを読み取ることはできません。サーバー側でローカル ファイルを読み取ります。したがって、あなたの場合、おそらくアプレットではなくサーブレットが必要です。

于 2012-06-17T02:29:13.760 に答える