[英]Unable to read properties file in java
我有一个主要的Class
,它是TestDriver.java
,我在其中调用functions
例如读取到 excel 文件等等,为此,我需要在 java 中给出一个 excel 文件路径,所以我使用的是属性文件而不是硬编码,并使用它我正在调用我的函数。 为了读取属性文件,我已经给出了文件路径,但我无法读取属性文件...
文件:TestDriver.java
public class TestDriver
{
public static void main(String args[]){
String filePath = "E:\\Project\\HRMSAutomation\\";
Globals gbl = new Globals(filePath);
// Functions.....
}
}
文件:Globals.java
public class Globals
{
static String filePath;
public Globals(String path) {
this.filePath = path;
}
static Properties prop = Genlib.readConfig(filePath+"config.properties");
//readConfig is a method which will read the properties file
public static final String LOGIN_URL = prop.getProperty("loginUrl");
}
文件:Config.properties
loginUrl = someurl....
testsRoot = tests
configFileDir = E:/Project/Automation/Data/ConfigData/
错误日志。
java.io.FileNotFoundException: nullconfig.properties (The system cannot find the file specified)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at gtlib.Genlib.readConfig(Genlib.java:96)
at projlib.Globals.<clinit>(Globals.java:15)
at testDrivers.TestDriver.main(TestDriver.java:89)
我收到错误,因为获取空值的 filePath 变量可能是Globals.java
文件中的一些错误
我是 Java, static
字段的初始化在构造函数之前运行。 所以,当它初始化时, filePath
仍然是null
。 将初始化放在构造函数中,如下所示:
public class Globals {
static String filePath;
public Globals(String path) {
this.filePath = path;
prop = Genlib.readConfig(filePath+"config.properties"); //readConfig is a method which will read the properties file
}
static Properties prop;
public static final String LOGIN_URL = prop.getProperty("loginUrl");
}
另外,如果这是一个static
类,我建议您使用static
方法来初始化它而不是构造函数。
猜猜您使用的是纯 Java 编码风格。
通过以下代码,您可以加载属性并检索某些参数
Properties prop = new Properties();
Class clazz = Object.class;
InputStream stream = clazz.getResourceAsStream({path}/Config.properties"); prop.load(stream);
filePath = prop.getProperty("configFileDir");
如果您使用 SpringBoot,工作会变得容易得多
config.properties
文件是确切名称还是Config.properties
?
在Globals.java
你指的是: filePath+"config.properties"
我不确定 Genlib 但下面是加载属性文件的简单方法。 您必须提供的路径是文件的相对路径。 例如,文件可能位于
源代码/测试/资源
所以你只需要像下面那样做:
FileInputStream configFile = new FileInputStream("src/test/resources" + File.separator + "config.properties");
Properties configProperties = new Properties();
configProperties.load(configFile);
您的文件路径是在类的构造函数中设置的,但您的属性对象使用的是静态类变量,该变量在创建该变量时进行初始化。
所以这意味着当你的属性对象被初始化时,文件路径还没有设置,所以属性试图打开“nullconfig.properties”的文件名。
为什么将它们存储为静态? 如果它们不是静态变量,您可以将它们全部移动到类变量中,并让构造函数打开属性文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.