2016-09-16 7 views
1

他の誰かがこのエラーに遭遇したことがあるのか​​どうかはわかりませんが、私は既存のInstall4jインストールプロジェクトを更新しています。私は、install4jのコンテキストが使用されるたびに文字列が直接使用されることに気付きました。たとえば :私は考えていたInstall4jの定数Casuingビルドの失敗

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

それは定数がinstall4jとJavaコード全体で共有することができ、Javaクラスに「somekey」を移動するために素晴らしいだろう。私はそうのようなクラスを作成し

public class InstallerContextConstants { 
    public static String KEY = "STRING_KEY"; 
} 

だから私はそうのように画面の前activiationスクリプトにこれを追加するために行く:

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文字列定数のいずれかを使用する場合、それは動作します。 http://resources.ej-technologies.com/install4j/help/javadoc/constant-values.html

これはどのように行うべきですか?

答えて

0

原則として、あなたのアプローチはうまくいくはずです。正しいコンパイルされたクラスがインストーラ - >カスタムコード&リソースの下に追加されていないと思います。

しかし、インストーラ - >カスタムコード&リソースステップの "コード編集"をクリックするほうがはるかに簡単です。これにより、すべてのスクリプトで使用できる静的定義のエディタが表示されます。

あなたがそこに

static String KEY = "STRING_KEY"; 

を追加する場合は、任意のインポートせずに任意のスクリプトでKEYを使用することができます。私は、私が使用したいということだけでなく、いくつかのカスタムコードを持って

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

'' 'KEY''変数です。静的な定義としてリソースステップに追加しても、それでもカスタムコードからアクセスできますか? – Dan

+0

このカスタムコードは、install4jの外部でコンパイルされたクラスファイルにありますか?次に、外部クラスファイルに定義を追加する必要があります。 –

関連する問題