Java - Applet - 读取与applet类相同的目录中托管的文件

时间:2014-07-23 20:31:01

标签: file security permissions nullpointerexception applet

我的applet有这段代码片段(基本上是从同一目录下的文件中读取)。

Scanner input = new Scanner(getClass().getResourceAsStream(a_file_name));

我正在使用Applet来查看如何读取服务器上托管的文件(或在本地保存在与* .class文件相同的目录中)。

  1. 我在Eclipse中选择了java类并选择了" Run as Applet"。我能够读取文件(保存在workspace / bin目录中)。所以,它运作良好。

  2. 我在远程服务器上托管了(* .class文件; * .txt文件和* .html)文件。通过将URL添加到"配置Java"中的安全列表,获得对URL的完全权限。我能够读取该文件。所以,它运作良好。

  3. 然后我在我的机器上本地启动了* .html文件(同样,我通过将其添加到"配置Java"中的安全列表,给予URL完全权限。)和* .html,* .txt文件和* .class文件都在eclipse工作区项目bin目录中。但是,它不起作用。下面的代码抛出异常。

    扫描仪输入=新扫描程序(getClass()。getResourceAsStream(a_file_name));

    案例[1]:没有安全URL这样的东西,因为我从Eclipse启动(作为Applet运行) 案例[2]:安全URL以http://开头 案例[3]:安全URL以file:/// D开头:/apps/eclipse/workspace/AppletSnippet/bin/index.html

  4. 你能否解释为什么它在Case [3]中不起作用?

    顺便说一句,这是[3]

    的例子
    java.lang.NullPointerException
        at java.io.Reader.<init>(Unknown Source)
        at java.io.InputStreamReader.<init>(Unknown Source)
        at java.util.Scanner.<init>(Unknown Source)
        at AppletSnippet.readFromTextFile(AppletSnippet.java:46)
        at AppletSnippet.init(AppletSnippet.java:100)
        at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.init(Unknown Source)
        at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
    

1 个答案:

答案 0 :(得分:0)

行。问题解决了。

我只有一个* .class和一个正在阅读的文本文件* .txt。

案例1(从Eclipse作为Applet运行)和案例2(从远程服务器运行) - 这些选项对它没有任何问题。

但是,在案例3中,如果我通过打开HTML文件在本地运行它,则getClass()。getResourceAsStream(a_file_name)将返回NULL。

所以,我用* .class和* .txt文件创建了一个* .jar文件;并在我的HTML中指定了ARCHIVE属性。 案例3也在运作。

由于