我有两个java类Configuration.java和login.java
Configuration.java
public class Configuration {
public Configuration() {}
public String getparams() throws IOException {
Properties properties = new Properties();
FileInputStream fileStream = new FileInputStream("C:/.../Desktop/configuration.txt");
try {
properties.load(fileStream);
String ip = (String) properties.get("IP");
String port = (String) properties.get("Port");
return ip + port;
} finally {
try {
fileStream.close();
} catch (IOException ex) {
Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);
}
}
}
}
login.java
...
Configuration cfg=new Configuration();
String ip=cfg.getparams();// error
String port=cfg.getparams();//error
private final String LOGIN_URL = "http://"+ ip +":"+port+"/webservice/login.php";
任何人都可以帮我解决错误
答案 0 :(得分:0)
public class Login extends Activity implements OnClickListener {
Configuration cfg;
String ip;
String port;
private String LOGIN_URL;
//other variables
protected void onCreate(Bundle savedInstanceState) {
//here you initialize your variables
try {
cfg = new Configuration();
String[] params = cfg.getparams();
ip = params[0];
port = params[1];
LOGIN_URL = "http://"+ ip +":"+port+"/webservice/login.php";
} catch (IOException e) {
//handle the exception
}
//.. your other code ...
}
//... your other methods ...
}
同样更改配置文件:
public class Configuration {
public Configuration() {}
public String[] getparams() throws IOException {
Properties properties = new Properties();
FileInputStream fileStream = new FileInputStream("C:/.../Desktop/configuration.txt");
try {
properties.load(fileStream);
String ip = (String) properties.get("IP");
String port = (String) properties.get("Port");
return new String[]{ip, port};
} finally {
try {
fileStream.close();
} catch (IOException ex) {
Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);
}
}
}
}
答案 1 :(得分:0)
为什么不将getParam的签名更改为不抛出错误。我看到你正在部分地调用properties.load();
类似的东西:
公共类配置{
public Configuration() {}
public String getparams() {
Properties properties = new Properties();
FileInputStream fileStream = null;
try {
fileStream = new FileInputStream("C:/.../Desktop/configuration.txt");
properties.load(fileStream);
String ip = (String) properties.get("IP");
String port = (String) properties.get("Port");
return ip + port;
}
catch(IOException ex)
{
return null;
}
finally {
try {
fileStream.close();
} catch (IOException ex) {
Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);
}
}
}
}
您可能希望将新属性移动到try块中,如果它也可以抛出。
答案 2 :(得分:0)
只需从 Configuration.java 中删除 throws IOException
并使用 try-catch 块处理异常。 throws
只声明可能发生的异常,不处理异常。
public class Configuration {
public Configuration() {}
public String getparams() {
Properties properties = new Properties();
FileInputStream fileStream = new FileInputStream("C:/.../Desktop/configuration.txt");
try {
properties.load(fileStream);
String ip = (String) properties.get("IP");
String port = (String) properties.get("Port");
return ip + port;
}
catch(IOException e)
{
e.printStackTrace();
}
finally {
try {
fileStream.close();
} catch (IOException ex) {
Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);
}
}
}
}