gpt4 book ai didi

java - 在 Eclipse 中调试 Java 时如何使 getResourceAsStream 工作?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:59:29 26 4
gpt4 key购买 nike

这真是令人难以置信……当我在包含文本文件的打包 JAR 文件上运行 Java 时,我可以使 getResource() 和 getResourceAsStream() 正常工作。 (有关引用,请参阅 accessing resources 上的 Sun 文档)当我在 Eclipse 中运行同一个程序时,我似乎无法使它正常工作,即使我已将我的文本文件放在与编译的 .class 相同的树中文件

你们中的任何一位能否指出任何细微之处以确保 getResource() 和 getResourceAsStream() 函数正常工作?

我有一种预感,它与 CLASSPATH 和/或 Eclipse 放置它自动编译的 .class 文件的位置有关。 (我注意到当我运行 Ant 时,它会编译自上次 Ant 构建以来发生更改的所有 Java 文件,即使 Eclipse 已经编译了这些 Java 文件。)

最佳答案

一些注意事项:

首先——正如 Chocos 所说,将它放在 eclipse 源目录中,而不是二进制目录中。 Eclipse 将在您“清理”时清除二进制目录,并清理不匹配的文件。它将非 java 源文件复制到二进制目录。

这意味着即使您将文件放在二进制目录中,它也可能会被 eclipse 删除...

请记住,getResourceAsStream 和 getResource 的操作与调用它们的代码包有关。例如:

package a.b.c;
public class Foo {
...
getClass().getClassLoader().getResourceAsStream("fee.txt");
...
}

这实际上会寻找a/b/c/fee.txt;该包是预先挂起的。如果您将 fee.txt 与 Foo.java 文件放在同一源目录中,或者如果您在类路径上有一组具有相同目录结构的单独资源目录,则此方法效果很好。

如果你使用

...getResourceAsStream("/fee.txt");

它将直接在类路径中查找 fee.txt。

当您从命令行运行时,JAR 中的资源文件在哪里?-- 斯科特

关于java - 在 Eclipse 中调试 Java 时如何使 getResourceAsStream 工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/760756/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com