需要创建一个可以加载属性的类,并且能够从该类调用所需的属性。例如propertiesClass.getname();
到目前为止,这是我的班级。我似乎无法启动财产负担。
所以我需要的是来自项目中的另一个类(当前变为null)
String url = TestProperties.getBaseUrl();
*更新了课程,这是现在的样子。
public class TestProperties {
private static Properties testProperties;
private static String instanceUrl;
public TestProperties() throws Exception{
loadProperties();
getInstanceProperties();
instanceUrl = TestProperties.testProperties.getProperty("confluence.base.url","");
}
public static String getBaseUrl(){
return instanceUrl;
}
private void loadProperties() throws IOException {
InputStream testPropertiesInput = this.getClass().getClassLoader().getResourceAsStream("smoketest.properties");
TestProperties.testProperties = new Properties();
// if (null != testProperties) {
try{
TestProperties.testProperties.load(testPropertiesInput);
} finally {
IOUtils.closeQuietly(testPropertiesInput);
}
// }
}
}
my otherclass(){
String myurl = TestProperties.getBaseUrl();
}
答案 0 :(得分:0)
请确保您能够通过smoketest.properties
正确访问您的属性文件InputStream testPropertiesInput
。
编辑:
无需在loadProperties
中重新定义局部变量并将其返回。它可以简单地写成:
private static void loadProperties() throws IOException {
InputStream testPropertiesInput = getClass().getClassLoader()
.getResourceAsStream("smoketest.properties");
Properties testProperties = new Properties();
try{
TestProperties.testProperties.load(testPropertiesInput);
} finally {
IOUtils.closeQuietly(testPropertiesInput);
}
TestProperties.testProperties = testProperties;
}
我认为public void TestProperties() throws Exception{
是您班级的构造函数。如果是,请将void
从中删除,因为它将其作为一种方法。
最后,您可能希望在testProperties
构造函数中使用TestProperties()
:
public TestProperties() throws Exception{
loadProperties();
getInstanceProperties();
instanceUrl = TestProperties.testProperties
.getProperty("confluence.base.url","");
}
请注意:我认为您的类变量不应定义为static
。有没有理由这样做?
编辑:以下是您希望使用的示例代码:
public class TestProperties {
private static Properties testProperties;
private static String instanceUrl;
public TestProperties(){
try{
loadProperties();
//getInstanceProperties();
instanceUrl = TestProperties.testProperties
.getProperty("confluence.base.url","");
}catch(IOException ioe){
ioe.printStackTrace();
}
}
static{
//Just to initialize the properties
new TestProperties();
}
private void loadProperties() throws IOException {
InputStream testPropertiesInput = getClass().getClassLoader()
.getResourceAsStream("smoketest.properties");
Properties testProperties = new Properties();
try{
testProperties.load(testPropertiesInput);
} finally {
IOUtils.closeQuietly(testPropertiesInput);
}
TestProperties.testProperties = testProperties;
}
public static String getBaseUrl(){
return instanceUrl;
}
public static String getPropertyValue(String key){
return TestProperties.testProperties.getProperty(key,"Not Found");
}
}
现在,您只需将基本网址设置为:
public static void main(String[] args) {
System.out.println(TestProperties.getBaseUrl());
System.out.println(TestProperties.getPropertyValue("confluence.base.url"));
System.out.println(TestProperties.getPropertyValue("test.property"));
}
答案 1 :(得分:0)
方法
public void TestProperties() throws Exception{
本来是构造函数,但不是一个,所以类只获取一个默认的无参数构造函数。将其更改为:
public TestProperties() throws Exception{
即。删除返回类型,因为构造函数与普通方法的区别在于不声明返回类型。