gpt4 book ai didi

Java/JNLP : substitute user. 来自参数列表的 home

转载 作者:太空宇宙 更新时间:2023-11-04 07:47:08 26 4
gpt4 key购买 nike

我有一个 JNLP,其中我向主应用程序提供了一些参数。

我想以可移植(至少 Windows/Linux)的方式给出用户主目录的子目录作为参数。

我尝试查看 ${user.home},但我真的不知道 JNLP 是否会执行替换。

编辑

明确地说:我不需要在客户端计算机上存储或查找某些属性的方法。我需要一种方法来通过 JNLP 传递包含用户主目录的参数。显然,这至少应该在 Windows 和 Linux 平台上工作。为了实现这个目标,我只想读取JVM设置的系统属性“user.home”。不过,我认为 Java Web Start 可以在客户端执行一些替换。

确实,所需的参数可能是相对于用户的主目录的,并且我的应用程序可以只加载系统属性。但是,在某些用例中我不希望出现这种行为。

我只是尝试一种以独立于平台的方式指定用户的主目录的方法......

最佳答案

jnlp 文件中 Web 服务器自动替换的唯一值是:

  • $$codebase - 请求的 URL(JNLP 文件名称除外)
  • $$name JNLP 文件的名称
  • $$context Web 应用程序的基本 URL
  • $$site 网络服务器地址
  • $$hostname 服务器的名称

只有在 servlet 容器中使用 JNLPDownloadServlet 时,才会发生这些替换。

主机在下载JNLP文件时不可能知道用户home参数的值。

如果您正在部署可以独立运行的 JNLP,并且需要将参数加载到应用程序,我建议您在特定位置使用属性文件,并在文件不存在时使用默认值(应用程序可以在第一次运行时动态创建属性文件,或者您可以使用安装程序来执行此操作)。

这是一个详细的示例:

public class Main {
public static void main(String ... args) throws IOException{
new Main();
}

private static Properties instance;

public static Properties getProperties(){
return instance;
}

private static Properties defaultProperties(){
// implement default properties here
Properties props = new Properties();
props.setProperty("myApp.property1","someDefaultValue");
return props;
}

public static void createDefaultPropsFile(File propsFile,Properties props) throws IOException {
propsFile.getParentFile().mkdirs();
props.store(new FileWriter(propsFile),"My App Properties");
}


private Main() throws IOException{
File appDir = new File(System.getProperty("user.home"), "myApp");
// find property file
File propsFile = new File(appDir, "settings.properties");
Properties appProperties = new Properties(defaultProperties());
if(!propsFile.exists()){
createDefaultPropsFile(propsFile,appProperties);
} else {
appProperties.load(new FileReader(propsFile));
}
// this should really be done using a singleton or something similar
instance = appProperties;
System.out.println("Property"+getProperties().getProperty("myApp.property1"));
}
}

关于Java/JNLP : substitute user. 来自参数列表的 home,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15116306/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com