/**
* Gets the app.version property value from
* the ./main.properties file of the base folder
*
* @return app.version string
* @throws IOException
*/
import java.util.Properties;
public static String getAppVersion() throws IOException{
String versionString = null;
//to load application's properties, we use this class
Properties mainProperties = new Properties();
FileInputStream file;
//the base folder is ./, the root of the main.properties file
String path = "./main.properties";
//load the file handle for main.properties
file = new FileInputStream(path);
//load all the properties from this file
mainProperties.load(file);
//we have loaded the properties, so close the file handle
file.close();
//retrieve the property we are intrested, the app.version
versionString = mainProperties.getProperty("app.version");
return versionString;
}
型 在主程序的任何需要app.version值的部分,我们调用它的方法如下:
String version = null;
try{
version = getAppVersion();
}
catch (IOException ioe){
ioe.printStackTrace();
}
9条答案
按热度按时间8iwquhpp1#
因此,您希望将与main/runnable jar位于同一文件夹中的
.properties
文件视为一个文件,而不是main/runnable jar的资源。在这种情况下,我自己的解决方案如下:第一件事你的程序文件结构应该是这样的(假设你的主程序是main.jar,它的主属性文件是main.properties):
字符串
有了这个架构,你可以main.properties在main.jar运行之前或运行时(取决于程序的当前状态)使用任何文本编辑器修改www.example.com文件中的任何属性,因为它只是一个基于文本的文件。例如,您的main.properties文件可能包含:
型
所以,当你从root/base文件夹运行主程序时,通常你会这样运行它:
型
或者直接说:
型
在main.jar中,需要为main.properties文件中的每个属性创建一些实用方法;假设
app.version
属性将具有getAppVersion()
方法,如下所示:型
在主程序的任何需要
app.version
值的部分,我们调用它的方法如下:型
kd3sttzy2#
我用另一种方法做了这件事。
字符串
1.获取Jar文件路径。
1.获取该文件的父文件夹。
1.在InputStreamPath中将该路径与您的属性文件名一起使用。
tyky79it3#
从jar文件访问文件目录中的文件总是有问题。在jar文件中提供类路径是非常有限的。相反,尝试使用bat文件或sh文件来启动程序。通过这种方式,您可以任意指定类路径,引用系统上任何位置的任何文件夹。
也可以看看我对这个问题的回答:
为包含sqlite的java项目制作.exe文件
3vpjnl9f4#
我有一个类似的案例:希望我的
*.jar
文件访问一个文件在一个目录下说*.jar
文件.也可以参考THIS ANSWER。我的文件结构是:
字符串
我可以将一个文件(比如
some.txt
)加载到*.jar
文件中的InputStream中,如下所示:型
然后对
stream
执行任何操作ygya80vv5#
如果你在这里提到
.getPath()
,那么它将返回Jar的路径,我猜你需要它的父文件来引用与jar一起放置的所有其他配置文件。此代码适用于Windows。在主类中添加代码。字符串
55ooxyrt6#
这对我很有效从
current directory
加载属性文件。注意事项:方法
Properties#load
uses ISO-8859-1 encoding。字符串
确保
java.properties
位于current directory
。你可以写一个小的启动脚本,切换到之前的正确目录,像型
在您的项目中,只需将
java.properties
文件放在项目根目录下,以便使此代码也能在IDE中工作。vpfxa7rd7#
我有一个通过类路径或外部配置log4j2.properties来执行这两种操作的示例
字符串
h5qlskok8#
字符串
rkttyhzu9#
一种方法是使用META-INF/MANIFEST.MF文件中的以下条目在JAR的类路径中添加当前目录:
字符串
然后下面的代码加载“system.properties“文件将无缝工作:
型