【发布时间】:2011-11-24 21:36:26
【问题描述】:
好的,我正在使用 Eclipse 在 Linux 中开发一个需要读取文本文件的程序。这个想法是将 JAR 和文本文件放在同一个文件夹中。所以我得到这样的文本文件路径:
Client.class.getClassLoader().getResource("Client.class");
这会正确返回路径,我附加文件名并获取以下路径:
/home/marquinio/workspace/my_project/info.txt
问题是当我将项目导出到可执行 JAR 文件时。 JAR 无法读取文件。我仔细检查过,一切看起来都很好。我看到的唯一问题是,现在路径的开头附加了一些“文件:”,如下所示:
file:/home/marquinio/workspace/my_project/info.txt
这可能是我收到“FileNotFoundException”的原因。 JAR 和文本文件都在同一个文件夹中。
有人知道如何解决这个问题吗?为什么 Java 在 Eclipse 和在命令提示符下执行 JAR 之间的行为会有所不同? 如果没有“file:”,是否可以替代 Java 提供的“...getResource(...)”?
注意:这个 JAR 也应该在 Windows 环境中兼容。还需要测试一下。
提前致谢。
【问题讨论】:
-
一种可能性:在调用作为文本文件路径的 jar 时传入命令行参数。
-
"needs to read a text file" 如果不需要写入到文本文件,把它放到Jar中,获取使用
getResource(String)的网址。该 URL 不能用于Desktop.open(File),但有Desktop.browse(URI)和许多其他方式,只需几行代码即可显示文本文件。 -
糟糕!我刚刚意识到
Desktop.browse(URI)会因为 Jar 中的资源而失败。我真傻。不过,除其他方式外,还有JEditorPane.setPage(URL)。将 JEP 放入JScrollPane,为其设置合理的首选大小并使用JOptionPane显示它。大约 5-10 行代码。这是short example。
标签: java linux eclipse file ubuntu