我正在创建一个小应用程序,用于在javafx上使用保存数据...问题告诉我,当我运行我的应用程序时找不到文件.. 错误消息
`java.io.FileNotFoundException: null\sample-app.conf (The system cannot find the path specified)`
错误行的代码如下
private String configFile = System.getProperty("user.home") + File.separator + "sample-app.conf";
public boolean loadLicense() {
// throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
try {
properties.load(new FileInputStream(configFile));
licenseString = properties.getProperty("license-string");
activatedLicenseString = properties.getProperty("activated-license-string");
if (properties.getProperty("license-type") != null) {
licenseType = Integer.parseInt(properties.getProperty("license-type"));
}
if (properties.getProperty("activated-license-type") != null) {
activatedLicenseType = Integer.parseInt(properties.getProperty("activated-license-type"));
}
hostname = properties.getProperty("floating-license-server-hostname");
if (properties.getProperty("floating-license-server-port") != null) {
int portnumber = Integer.parseInt(properties.getProperty("floating-license-server-port"));
}
return true;
} catch (IOException ex) {
Logger.getLogger(RegController.class.getName()).log(Level.SEVERE, null, ex);
}
return false;
}
答案 0 :(得分:0)
目前还不清楚为什么要使用System.getProperty("C:\\Users\\Lenovo")
构建路径,但这几乎肯定会返回null。这可能是您问题的根源,但由于您没有提供堆栈跟踪,因此无法确定。
这是因为您传递了System.getProperty()
intended to return a value for a property key,而且" C:\ Users \ Lenovo"不是属性键(除非您使用-D
选项运行JVM,将其设置为属性)。
因此,解决方案取决于您想要做什么。
configFile
设置为路径名的固定String版本。-D "my.license.conf.rootdir=C:\\Users\\Lenovo"
传递给JVM,在这种情况下,您可以使用System.getProperty("my.license.conf.rootdir")
来构建您的路径。无论你做什么,一旦你有了一个字符串路径名,就可以使用像File.exists()
之类的典型API对它进行验证,然后再将其传递给实际需要特定文件的路径名出现在系统上的代码,并在你的代码。
也就是说,你想按顺序: