1

我有一个小程序需要从带有 .java 文件的 eclipse 包中的本地文本文件加载保存的数据。在这个问题中使用它的名字是“saveData.txt”。

当我通过 Eclipse 运行小程序时,一切正常。但是,一旦我将其 jar 起来(确保包含 txt 文件和 .classpath 文件)并将其放到网站上,applet 就无法加载。我在 InputStreamReader 上收到 Unknown source 错误。我在下面包含了用于加载和保存的代码。创建 InputStreamReader Line 时出现错误。

我搞砸的任何想法?

private ArrayList loadLocations() throws IOException{
        ArrayList locations = new ArrayList();
        InputStream is = getClass().getResourceAsStream("\saveData.txt");

            ;; BELOW LINE is where exception is thrown
            InputStreamReader isr = new InputStreamReader(is);
    mInputStream = new BufferedReader(isr);
    String line = mInputStream.readLine();

    while (line != null && !(line.equals(""))) {
        locations.add(new Location(line));

        line = mInputStream.readLine();
    }
    if (mInputStream != null)
        mInputStream.close();   

    Collections.sort(locations);

    return locations;
}

private void saveLocations() throws IOException {
    try {
        mOutputStream = new PrintWriter(new File(getClass().getResource("\\saveData.txt").toURI()));
    }
    catch (URISyntaxException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    ;
    for (Location l : locations) {
        mOutputStream.print(l.getRawListing()+ "\n");
    }


    if (mOutputStream != null)
        mOutputStream.close();

}

完整的错误详细信息(在浏览器中运行时)

Java 插件 1.6.0_24
使用 JRE 版本 1.6.0_24-b07 Java HotSpot(TM) 客户端虚拟机
用户主目录 = C:\Users\Ross
-------------------------------------------------- --
c: 清除控制台窗口
f:在终结队列中终结对象
g:垃圾收集
h:显示此帮助信息
l:转储类加载器列表
m:打印内存使用情况
o:触发日志记录
问:隐藏控制台
r:重载策略配置
s:转储系统和部署属性
t:转储线程列表
v: 转储线程堆栈
x:清除类加载器缓存
0-5:将跟踪级别设置为
-------------------------------------------------- --


java.lang.reflect.InvocationTargetException
    在 com.sun.deploy.util.DeployAWTUtil.invokeAndWait(未知来源)
    在 sun.plugin2.applet.Plugin2Manager.runOnEDT(未知来源)
    在 sun.plugin2.applet.Plugin2Manager.createApplet(未知来源)
    在 sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(未知来源)
    在 java.lang.Thread.run(未知来源)
引起:java.lang.NullPointerException
    在 java.io.Reader.(未知来源)
    在 java.io.InputStreamReader.(未知来源)
    在listings.listings.loadLocations(listings.java:624)
    在listings.listings.setup(listings.java:667)
    在listings.listings.(listings.java:59)
    在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    在 sun.reflect.NativeConstructorAccessorImpl.newInstance(未知来源)
    在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知来源)
    在 java.lang.reflect.Constructor.newInstance(未知来源)
    在 java.lang.Class.newInstance0(未知来源)
    在 java.lang.Class.newInstance(未知来源)
    在 sun.plugin2.applet.Plugin2Manager$12.run(Unknown Source)
    在 java.awt.event.InvocationEvent.dispatch(未知来源)
    在 java.awt.EventQueue.dispatchEventImpl(未知来源)
    在 java.awt.EventQueue.access$000(未知来源)
    在 java.awt.EventQueue$1.run(未知来源)
    在 java.awt.EventQueue$1.run(未知来源)
    在 java.security.AccessController.doPrivileged(本机方法)
    在 java.security.AccessControlContext$1.doIntersectionPrivilege(未知来源)
    在 java.awt.EventQueue.dispatchEvent(未知来源)
    在 java.awt.EventDispatchThread.pumpOneEventForFilters(未知来源)
    在 java.awt.EventDispatchThread.pumpEventsForFilter(未知来源)
    在 java.awt.EventDispatchThread.pumpEventsForHierarchy(未知来源)
    在 java.awt.EventDispatchThread.pumpEvents(未知来源)
    在 java.awt.EventDispatchThread.pumpEvents(未知来源)
    在 java.awt.EventDispatchThread.run(未知来源)
异常:java.lang.reflect.InvocationTargetException
4

0 回答 0