java - 在 Linux 中将 Java URL 转换为有效的文件路径

标签 java linux eclipse file ubuntu

好的,我正在使用 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 之间的行为会有所不同? Java 提供的没有“文件:”的“...getResource(...)”有替代品吗?

注意:此 JAR 也应在 Windows 环境中兼容。还需要测试一下。

提前致谢。

最佳答案

不保证您所引用的资源是文件系统上的文件。为什么不使用 ClassLoader#getResourceAsStream()?在不查看细节的情况下,我最好的猜测是您看到的不同行为是因为在上述每种情况下使用了不同的类加载器。

关于java - 在 Linux 中将 Java URL 转换为有效的文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7550231/

相关文章:

java - Spring boot + gradle 将命令行参数传递给 application.property

linux - sendmsg 失败,错误代码为 9

java - 当消息为空时如何隐藏 jface.dialogs.TitleAreaDialog 消息光标

java - 反转两个索引之间的数组部分

java - 使用java向同一路由器下的多个主机发送数据包

c++ - 如何使用 FIX 类型实现类

linux - 是否有任何人都可以在 linux 中读/写的共享文件的特殊用户和组?

android - Eclipse Juno 不会创建 Android Activity

java - 我可以将字符串文件从 res/values/string.xml 放置到远程主机服务器并从那里读取吗

java - 认证请求到/j_spring_security_check 404错误