gpt4 book ai didi

java - 内部 JAR 使用文件系统上的文件

转载 作者:行者123 更新时间:2023-12-01 15:07:26 26 4
gpt4 key购买 nike

我有一个用例,我需要将这段特定的代码导出为 java 库(最终将是一个 JAR),但问题是它需要使用存储在文件上的物理文件中的一些信息系统。

我有两个问题:

1) 我应该将这些文件放在文件系统的哪里(我能想到的一个选项是包含该库的 Java 模块的资源目录中:是否怀疑资源目录也被编译到 jar 中? )

2) 当我从外部 Java 应用程序使用该库时,该库如何找到这些文件?它们仍然在类路径中吗?

最佳答案

您有两个选择,第一个是将文件放置在包结构中,以便将它们打包到 jar 中。您可以从这样的代码中获取它们:

getClass().getResourceAsStream("/path/to/your/resource/resource.ext");

如果您要从名为 A 的类的静态方法调用它,那么您应该这样写:

A.class.getResourceAsStream("/path/to/your/resource/resource.ext");

路径的“/path”部分是最顶层的包,resource.ext是您的文件名。

另一种选择是将它们放在 jar 包之外,但此时 jar 需要知道它们的位置:

  • 将其作为程序的参数提供(java -jar program.jar system/path/to/file)
  • 用路径对您读取文件的位置进行硬编码

我对你的问题的理解和回答与classpath无关。 :

The CLASSPATH variable is one way to tell applications, including the JDK tools, where to look for user classes. (Classes that are part of the JRE, JDK platform, and extensions should be defined through other means, such as the bootstrap class path or the extensions directory.)

编辑:但您仍然可以将其放在那里并从如下代码中获取它:

System.getProperty("java.class.path");

然而,它需要一些逻辑来解析它。

关于java - 内部 JAR 使用文件系统上的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12798007/

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