Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java izpack安装程序输入属性文件没有密码字段的输入_Java_Installation_Izpack - Fatal编程技术网

Java izpack安装程序输入属性文件没有密码字段的输入

Java izpack安装程序输入属性文件没有密码字段的输入,java,installation,izpack,Java,Installation,Izpack,我正在使用Izpack为我的java项目创建安装程序。 现在,我的要求是,我希望通过从属性文件而不是从用户界面获取用户输入来运行安装程序 在浏览Izpack文档时,我发现我可以使用以下两个命令来完成它 -选项模板:生成名称在args[1]中指定的属性文件 java-jar installer.jar-options模板inputs.properties -选项:从args[1]中指定的属性文件读取属性时运行安装 java-jar installer.jar-options inputs.prop

我正在使用Izpack为我的java项目创建安装程序。 现在,我的要求是,我希望通过从属性文件而不是从用户界面获取用户输入来运行安装程序

在浏览Izpack文档时,我发现我可以使用以下两个命令来完成它

-选项模板:生成名称在args[1]中指定的属性文件

java-jar installer.jar-options模板inputs.properties

-选项:从args[1]中指定的属性文件读取属性时运行安装

java-jar installer.jar-options inputs.properties

但是,当我使用第一个命令导出inputs.properties文件时,它没有安装程序面板上的密码字段。 因此,当我尝试在将输入值放入inputs.properties后使用第二个命令运行安装程序时,它给出了该密码值的错误

即使在inputs.properties中手动添加了密码字段名和值,安装程序也不会从属性文件中窥视该值

我成功地运行了安装程序,从xml文件中获取了输入,并且它还有密码字段。但我的要求是在属性文件中提供输入

任何帮助都会对我很有帮助


谢谢

这是5.0版中的一个公开缺陷。另一位用户也表示在4.x中存在此问题。我也无法使用带有-options标志的版本4.3.5运行无头安装

请创建“com.izforge.izpack.panels.userinput.UserInputPanelConsole”类,请注意包路径

公共类UserInputPanelConsole扩展了UserInputPanelConsoleHelper{

public UserInputPanelConsole(Resources resources, ConsolePanels panels) {
    super(resources, panels);
}

public boolean runConsoleFromProperties(InstallData installData, Properties properties){
  boolean result = super.runConsoleFromProperties(installData, properties);
  for (Map.Entry<Object, Object> entry : properties.entrySet()) {
      if (properties.containsKey(entry.getKey())) {
          String value = (String) entry.getValue();
          if(!StringsUtil.isEmptyString(value)){
              installData.setVariable(entry.getKey().toString(), value);
          }
        }
  }
  return result;
}
公共用户输入面板控制台(资源、控制台面板){
超级(资源、小组);
}
公共布尔值runConsoleFromProperties(InstallData、InstallData、Properties){
布尔结果=super.runConsoleFromProperties(installData,properties);
对于(Map.Entry:properties.entrySet()){
if(properties.containsKey(entry.getKey())){
String value=(String)entry.getValue();
如果(!StringsUtil.isEmptyString(值)){
setVariable(entry.getKey().toString(),value);
}
}
}
返回结果;
}
}

正如您所看到的,您强制设置installData变量,这将远离password字段设置变量