Java applet - 在同一Web服务器上拒绝访问文件

时间:2010-03-26 12:51:02

标签: java applet file-permissions

我编写了一个简单的Java小程序,用于根据CSV文件中的某些数据生成技术图像。我将CSV文件作为参数传递给applet:

<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>

据我了解applet安全限制,applet应该能够从他们所在的主机读取数据。

这里的这些小程序http://www.jalview.org/examples/applets.html使用相同的方法将文本数据文件作为参数传递。所以我不确定为什么我自己的applet不起作用。

我正在使用sourceforge上的javacsv项目读取文件。

我读取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 个答案:

答案 0 :(得分:5)

您显然尝试使用“http://localhost/applet_test/test.csv”作为文件名而不是URL。看一下java.net包中的URL和URLConnection类,并使用它们来读取内容而不是java.io.File。