Java 导致生成失败的Install4j常量

Java 导致生成失败的Install4j常量,java,install4j,Java,Install4j,不确定是否有其他人遇到过此错误,但我正在更新现有的Install4j安装项目。我注意到,每当使用install4j的上下文时,都会直接使用字符串。 例如: context.setVariable("somekey", "Some value"); 我认为将“somekey”移动到一个java类中会很棒,在这个java类中,常量可以在install4j和java代码中共享 我创建了这样一个类: public class InstallerContextConstants { public

不确定是否有其他人遇到过此错误,但我正在更新现有的Install4j安装项目。我注意到,每当使用install4j的上下文时,都会直接使用字符串。 例如:

context.setVariable("somekey", "Some value");
我认为将“somekey”移动到一个java类中会很棒,在这个java类中,常量可以在install4j和java代码中共享

我创建了这样一个类:

public class InstallerContextConstants {
    public static String KEY = "STRING_KEY";
}
因此,我将其添加到屏幕的预激活脚本中,如下所示:

import com.somepackage.InstallerContextConstants;
Util.showMessage(InstallerContextConstants.APPLICATION_ONLY_INSTALL);
但是这不会编译。。。?它给了我:

install4j: compilation failed. Reason: com.ejt.a.c.g: Failed to compile script
----------
In application "Installer", property "Help customizer script":
1. WARNING in /private/var/folders/n7/vjsf1vp56s13hzpgypthp2_h0000gp/T/script4119340027951579520.java.dir/com/install4j/script/I4jScript_Internal_1.java (at line *19)
        private void eval(final com.install4j.api.context.InstallerContext context, final java.util.List options) throws Exception {
                                                                                          ^^^^^^^^^^^^^^
List is a raw type. References to generic type List<E> should be parameterized
----------
In application "Installer", property "Help customizer script":
2. WARNING in /private/var/folders/n7/vjsf1vp56s13hzpgypthp2_h0000gp/T/script4119340027951579520.java.dir/com/install4j/script/I4jScript_Internal_1.java (at line 1)
        if (Util.isLinux()) options.add(new String[] { "--skip-precheck", "Bypasses Installer precheck checks. Note this must be the *first* argument."});
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Type safety: The method add(Object) belongs to the raw type List. References to generic type List<E> should be parameterized
----------
In application "Installer", property "Help customizer script":
3. WARNING in /private/var/folders/n7/vjsf1vp56s13hzpgypthp2_h0000gp/T/script4119340027951579520.java.dir/com/install4j/script/I4jScript_Internal_1.java (at line *24)
        eval((com.install4j.api.context.InstallerContext)parameters[0], (java.util.List)parameters[1]);
                                                                         ^^^^^^^^^^^^^^
List is a raw type. References to generic type List<E> should be parameterized
----------
----------
In screen "[Additional confirmations]", property "Pre-activation expression":
4. ERROR in /private/var/folders/n7/vjsf1vp56s13hzpgypthp2_h0000gp/T/script4119340027951579520.java.dir/com/install4j/script/I4jScript_Internal_35.java (at line 5)
        Util.showMessage(InstallerContextConstants.KEY);
                                          ^^^^^^^^^^^^^^^^^^^^^^^^
KEY cannot be resolved or is not a field
----------
4 problems (1 error, 3 warnings)
install4j:编译失败。原因:com.ejt.a.c.g:未能编译脚本
----------
在应用程序“安装程序”中,属性“帮助自定义程序脚本”:
1./private/var/folders/n7/vjsf1vp56s13hzpgypthp2_h0000gp/T/script411934002795179520.java.dir/com/install4j/script/I4jScript_Internal_1.java(第19行)中的警告
私有void eval(final com.install4j.api.context.InstallerContext context,final java.util.List options)引发异常{
^^^^^^^^^^^^^^
列表是原始类型。对泛型类型列表的引用应参数化
----------
在应用程序“安装程序”中,属性“帮助自定义程序脚本”:
2.在/private/var/folders/n7/vjsf1vp56s13hzpgypthp2_h0000gp/T/script411934002795179520.java.dir/com/install4j/script/I4jScript_Internal_1.java(第1行)中出现警告
if(Util.isLinux())options.add(新字符串[]{“--skip precheck”,“绕过安装程序precheck检查。注意,这必须是*第一个*参数。“});
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
类型安全:方法add(Object)属于原始类型列表。对泛型类型列表的引用应参数化
----------
在应用程序“安装程序”中,属性“帮助自定义程序脚本”:
3.在/private/var/folders/n7/vjsf1vp56s13hzpgypthp2_h0000gp/T/script411934002795179520.java.dir/com/install4j/script/i4jsscript_Internal_1.java(第24行)中发出警告
eval((com.install4j.api.context.InstallerContext)参数[0],(java.util.List)参数[1]);
^^^^^^^^^^^^^^
列表是原始类型。对泛型类型列表的引用应参数化
----------
----------
在屏幕“[其他确认]”中,属性“预激活表达式”:
4.在/private/var/folders/n7/vjsf1vp56s13hzpgypthp2_h0000gp/T/script411934002795179520.java.dir/com/install4j/script/I4jScript_Internal_35.java中出错(第5行)
Util.showMessage(InstallerContextConstants.KEY);
^^^^^^^^^^^^^^^^^^^^^^^^
密钥无法解析或不是字段
----------
4个问题(1个错误,3个警告)
但是,如果我使用任何install4j字符串常量,它都可以工作


关于如何做到这一点,有什么建议吗?

原则上,您的方法应该有效,我猜在Installer->Custom Code&Resources下没有添加正确的编译类

但是,在安装程序->自定义代码和资源步骤中单击“编辑代码”要容易得多,这将为所有脚本提供静态定义的编辑器

如果你加上

static String KEY = "STRING_KEY";
在那里,您可以在任何脚本中使用
,而无需任何导入:

context.setVariable(KEY, "Some value");

原则上,您的方法应该是可行的,我猜正确的编译类没有添加到Installer->Custom Code&Resources下

但是,在安装程序->自定义代码和资源步骤中单击“编辑代码”要容易得多,这将为所有脚本提供静态定义的编辑器

如果你加上

static String KEY = "STRING_KEY";
在那里,您可以在任何脚本中使用
,而无需任何导入:

context.setVariable(KEY, "Some value");

我还有一些自定义代码,我想使用
KEY
变量。如果我将其作为静态定义添加到资源步骤中,我是否仍然能够从自定义代码中访问它?该自定义代码是否位于在install4j之外编译的类文件中?那么您必须将定义添加到外部类文件中。我知道我还需要一些自定义代码,我想使用
KEY
变量。如果我将其作为静态定义添加到资源步骤中,我是否仍然能够从自定义代码访问它?该自定义代码是否位于在install4j之外编译的类文件中?那么您必须将定义添加到外部类文件中。