在创建至少应在Windows,Linux,Mac OS和Android上部署的Java解决方案时,我们正在寻找一种保留系统范围配置数据的方法。
What is the proper way to store app's conf data in Java?中的围绕特定用户的主目录讨论解决方案。在Oracle的一个文档页面上:
http://docs.oracle.com/javase/7/docs/technotes/guides/deployment/deployment-guide/properties.html
采取了类似的方法。
我们想要更系统化的路线。例如。在Linux系统上,/ etc或/ var / lib的子目录可能是一个合适的位置。在Windows / $ WIN / System32上可能是一个开始,在Mac OS / System / Library上可能是该位置。
JAVA_HOME - 可能是一个选项,但它有自己的问题: Windows ignores JAVA_HOME: how to set JDK as default?
java.util.Preference类已经存在了一段时间,但id没有提供正确的选择 BackingStore位置: http://www.allaboutbalance.com/articles/disableprefs/
什么是允许
的库问题的第一部分是关于平台无关方法中的正确位置。应该使用哪些目录,例如在Android上?还有哪些后续问题需要处理(例如访问权限)? 假设存在一个图书馆,问题的第一部分将通过图书馆处理问题的这一部分的方式来回答。因此,如果您认为没有这样的图书馆,请您回答这部分问题。
答案 0 :(得分:0)
方法: http://www.java-tutorial.ch/core-java-tutorial/java-osname-system-property 是迄今为止我能找到的最接近的:
String osName = System.getProperty("osName", null);
OperatingSystem operatingSystem = OperatingSystem.resolve(osName);
OperatingSystemFamily family = operatingSystem.getFamily();
switch (family) {
case UNIX:
setBinFolder(DEFAULT_UNIX_BIN);
setConfFolder(DEFAULT_UNIX_CONF);
setDataFolder(DEFAULT_UNIX_DATA);
break;
case WINDOWS:
setBinFolder(DEFAULT_WINDOWS_BIN);
setConfFolder(DEFAULT_WINDOWS_CONF);
setDataFolder(DEFAULT_WINDOWS_DATA);
break;
case MACOS:
setBinFolder(DEFAULT_MACOS_BIN);
setConfFolder(DEFAULT_MACOS_CONF);
setDataFolder(DEFAULT_MACOS_DATA);
break;
default:
setBinFolder(USER_HOME+"/bin");
setConfFolder(USER_HOME+"/conf");
setDataFolder(USER_HOME+"/data");
break;
}
但它只解决了部分问题,以识别操作系统并做出相应的反应。 请随意在此基础上回答这个问题。