【问题标题】:Java - Get string path of resource filesJava - 获取资源文件的字符串路径
【发布时间】:2012-09-16 05:09:58
【问题描述】:

我想访问以获取我的资源密钥文件的字符串路径。如果我在 Eclipse 中调试项目,一切都会像魅力一样工作,但如果我将项目导出到可运行的 .jar 文件 - 项目无法访问关键文件,因为路径错误。

PUBLIC_KEY_PATH = "src/resources/public.key";
PRIVATE_KEY_PATH = "src/resources/private.key";

但是我如何获得可运行的 .jar 文件的正确路径?我不想获取 URL 或其他任何内容 - 我想获取字符串路径。

我希望有人可以帮助我。


解决方案:

public static String PUBLIC_KEY_PATH = "/resources/public.key";
public static String PRIVATE_KEY_PATH = "/resources/private.key";

我正在使用InputStream 来读取文件内容:

InputStream in = ExampleClass.class.getResourceAsStream(PUBLIC_KEY_PATH);
ObjectInputStream oin = new ObjectInputStream(new BufferedReader(in));

我们去;)

【问题讨论】:

  • 只是一个提示,我认为资源的路径不会是“src/resources/”,它更像是“/resources/”。我不熟悉 Eclipse 的 Jar'ing 过程,但我很确定“src”将等同于 Jar 的根级别......
  • 对于不起作用的 .jar 文件。但是,如果我只是在 eclipse 中编译它就可以了。我需要一种对两者都适用的方法。
  • 我建议您需要更改 Eclipse 的执行上下文。我个人不使用 Eclipse,但 Netbeans 可以很好地完成这类事情。

标签: java url jar resources path


【解决方案1】:

您可以通过Class#getResourceAsStream() 从文件中获取inputStream。例如:

InputStream is = FooClass.class.getResourceAsStream("public.key");

您将public.key 文件保存在同一目录中的位置FooClass.java FooClass.class 所在的位置。

【讨论】:

  • 我会使用FooClass.class.getResourceAsStream("/public.key");(注意文件名前的斜线)。
【解决方案2】:

您可以将这些密钥复制到WEB-INF/classes,无论您在哪里加载这些密钥,都可以调用

this.getClass().getClassloader().getResourceAsStream(fileName).

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 2013-07-09
    • 2020-09-09
    • 1970-01-01
    • 2010-10-30
    • 2011-04-25
    • 1970-01-01
    相关资源
    最近更新 更多