在原始项目中,我有一个读取txt文件的JAVA文件,我把txt文件放在这个项目的根目录下,一切都很好。
FileInputStream in = new FileInputStream("properties.txt");
现在,我将此项目导出为jar,在新项目中,我将此jar用作外部库。这里有一个问题:当我使用这个外部库文件时,我应该把txt文件放在这个新项目中?
答案 0 :(得分:1)
如果您将此文件与项目一起发送并且不需要更改,则可以将其添加到您的jar并通过ClassLoader getResourceAsStream
从那里加载:
this.getClass().getResourceAsStream("properties.txt");
(技术上它不再是文件,当它进入Java类领域,而是资源时)
答案 1 :(得分:1)
在jar中,使用类似
的方式访问它getClass().getClassLoader().getResourceAsStream("properties.txt")
答案 2 :(得分:0)
该文件应位于类路径的根目录。
答案 3 :(得分:0)
Java提供了许多设置类路径的机制,包括通过命令行,通过环境变量,以及在可执行Java jar文件的MANIFEST.MF中设置它。
这些都是需要管理的痛苦。了解技术并了解基础知识是很好的。但实际使用它们确实是一个坏主意。
你应该做的就是这个。
首先,将所有Java库放在系统的单个位置。 C:\ java \ libraries,或者其他什么。你记得的某个地方,你的所有项目都可以访问。
接下来,使用其版本号命名所有库。如果您使用log4j v1.4.1,则将jar放在库区域的log4j-1.4.1目录中。这为您提供了“免费”的库版本。
最后,学习Ant。对于简单的项目,Ant很简单。使用Ant build.xml文件来编译,测试和运行您的应用程序。
为什么呢?有几个原因。
因为一旦设置完毕,向项目添加新库是微不足道的,您可以在build.xml中添加一行。 Ant可以让您更轻松地处理简单的抽象(就像所有库所在的位置一样)。
build.xml是自包含的。如果您使用类路径的环境变量,那么一个项目的类路径可能与另一个项目的类路径不同。这意味着重置环境变量。继续这个,你最终会发誓说某个“新问题”,因为你的类路径设置错误,它会“之前”工作。在build.xml中设置一次,忘掉它。
Ant是可移植的。它在Windows,Linux,Mac,AS / 400上运行相同,它运行Java运行的所有地方,与shell脚本或BAT文件不同。
它很轻巧。简单的ant脚本很简单。他们不会给他们带来太多的包袱,你总是可以让他们吓人复杂。它只比Maven简单得多。
大多数IDE直接支持Ant。如果您决定返回IDE,大多数人只需使用最少配置的ant构建文件即可。
这是使用notepad ++解决类路径问题的方法。设置类路径是有效的,但它还不够,管理和管理都很痛苦。学习Ant的基础知识可以让你在最小的工作中走得更远。
答案 4 :(得分:0)
将文件放入应用程序的“工作目录”中,表示启动应用程序的目录。
你应该有一些约定,例如“配置文件必须驻留在工作目录或工作目录/ config中”并提供一种覆盖它的方法,例如使用系统属性,而不是像你这样做:
getClass().getClassLoader().getResourceAsStream(System.getProperty("configuration.file.path","properties.txt"))