Java-апплет - доступ к файлу запрещен на том же веб-сервере - PullRequest
1 голос
/ 26 марта 2010

Я написал простой Java-апплет для генерации технического изображения на основе некоторых данных в CSV-файле. Я передаю в CSV-файл в качестве параметра для апплета:

<applet code = "assaymap.AssayMapApplet" archive = "http://localhost/applet_test/AssayMap.jar" height="600px" width="800px">
    <param name="csvFile" value="http://localhost/applet_test/test.csv">
</applet>

Насколько я понял ограничения безопасности апплета, апплет должен иметь возможность считывать данные с хоста, на котором он находится.

Эти апплеты здесь http://www.jalview.org/examples/applets.html используют тот же подход, что и передача текстового файла данных в качестве параметра. Поэтому я не уверен, почему мой собственный апплет не работает.

Я читаю файл, используя проект javacsv на sourceforge.

Мой код для чтения файла CSV:

public static ArrayList<Assay> getData(String file) throws FileNotFoundException, IOException {

    ArrayList<Assay> assays = new ArrayList<Assay>();

    CsvReader reader = new CsvReader(file);
    reader.readHeaders();
    while (reader.readRecord()){
        int assay_id = Integer.valueOf(reader.get("assay_id"));
        String assay_name = reader.get("assay_name");
        float distance = Float.parseFloat(reader.get("distance"));
        assays.add(new Assay(assay_id, assay_name, distance));
    }

    return assays;
}

Я получаю сообщение об ошибке:

Error with processing the CSV data.
java.security.AccessControlException: access denied (java.io.FilePermission http:\localhost\applet_test\test.csv read)

1 Ответ

5 голосов
/ 26 марта 2010

Вы явно пытаетесь использовать "http://localhost/applet_test/test.csv" в качестве имени файла, а не в качестве URL. Взгляните на классы URL и URLConnection в пакете java.net и используйте их для чтения содержимого вместо java.io.File.

...