"panel requires attribute id" 定义属性时

"panel requires attribute id" when the attribute is defined

我正在尝试解决 windows 上 izpack 安装程序的问题。第一步是从 xml 定义到安装程序,但 izpack 一直抱怨 <panel> requires attribute 'id' 这是相关部分:我有面板的 ID 和适当的资源,这个文件确实为另一个用户编译(使用旧版本的 izpack)

编辑:尽管有错误名称,izpack 仍在抱怨在尝试解析 resources 部分时发生的事情。

<resources>
    <!-- <res id="ImagePanel.img" src="installscreen.jpg"/> -->
    <res id="HTMLHelloPanel.splash" src="./InstallHTML/splash.html"/>
    <res id="LicencePanel.licence" src="Licence.txt"/>
    <res id="HTMLInfoPanel.info" src="./InstallHTML/WindowsInstall_eng.html"/>
    <!-- localization of the info panel -->
    <res id="HTMLInfoPanel.info_fra" src="./InstallHTML/WindowsInstall_fra.html"/>
    <res id="HTMLInfoPanel.info_eng" src="./InstallHTML/WindowsInstall_eng.html"/>
    <res id="HTMLInfoPanel.info_deu" src="./InstallHTML/WindowsInstall_deu.html"/>
    <res id="userInputSpec.xml" src="userInputSpec.xml"/>
    <!--Everything is parsed to this point. The tag below gets choked on -->
    <res id="TargetPanel.dir.windows" src="TargetDir.txt"/>
    <!-- localization of the info panel -->
    <res id="userInputLang.xml_eng" src="userInputLang.xml_eng"/>
    <res id="userInputLang.xml_fra" src="userInputLang.xml_fra"/>
    <res id="userInputLang.xml_deu" src="userInputLang.xml_deu"/>
    <res id="ShortCutPanel.shortcutSpec" src="shortcutSpec.xml"/> 
    <res id="ProcessPanel.Spec.xml" src="ProcessPanel.Spec.xml"/>
    <!-- localization of resource strings -->
    <res id="packsLang.xml_fra" src="packsLang.xml_fra"/>
    <res id="packsLang.xml_eng" src="packsLang.xml_eng"/>
    <res id="packsLang.xml_deu" src="packsLang.xml_deu"/>
</resources>
<!-- The panels section. We indicate here which panels we want to use. The order will be respected. -->
<panels>
    <panel classname="HTMLHelloPanel" id="splash"/>

    <panel classname="HTMLInfoPanel" id="info"/>
    <panel classname="LicencePanel" id="licence"/>
    <panel classname="TargetPanel" id="dir.windows"/> 
    <panel classname="PacksPanel"/>
    <panel classname="InstallPanel"/>
    <panel classname="ShortCutPanel" id="shortcutSpec"/>

</panels>

我正在使用 izpack 5.0 快照。

我没有创建这个文件,它有点像遗留问题,最初设置它的人已经不在这个项目中了。简短版本:那个标签是 invalid/different 来自其他标签呢?

编辑:在有人指出之前,据我所知,PackPanel 和 LicencePanel 对 ID 没有任何用处。我也尝试过注释掉除其中一个具有列出 ID 的面板之外的所有面板,但仍然出现相同的错误。

根据 izpack documentation 5.0 版与之前的版本不兼容。它们不是从文本资源中解析的默认安装目标,而是定义为变量。不知道为什么这个特殊的异常会导致这个格式错误。

以上的正确实现是 替换此项:

<res id="TargetPanel.dir.windows" src="TargetDir.txt"/>

有了这个:(在资源列表之外)

<variables>
    <variable name="TargetPanel.dir.windows" value="${$USER_HOME}/Programs/ArtOfIllusion"/>
</variables>

目标面板是:

<panel classname="TargetPanel"/>

我遇到了类似的问题。注释掉 UserInputSpec.xml 确实允许它编译。即使在那个文件中,我也有在 panel 标签中定义的 id 属性。不知道为什么它仍然给出错误。

编辑:您需要确保 UserInputSpec.xml 中的 id 属性与您的 UserInputPanel 的面板 ID 匹配:

<userInput>
 <panel id="mypanel">
 ...

还要确保您的文件名是 UserInputSpec.xml,在我的例子中,我将文件命名为其他名称:)