2013-11-09 5 views
5

Java 7u40の最後のセキュリティ変更以降、JNLPファイルに署名する必要があります。これは、最終的なJNLPをJNLP-INF/APPLICATION.JNLPに追加するか、署名されたメイン・ジャーのJNLP-INF/APPLICATION_TEMPLATE.JNLPにテンプレートJNLPを指定することによって行うことができます。jnlpテンプレートファイルのワイルドカード

最初の方法はうまくいきますが、これまで知られていなかったランタイム引数をアプリケーションに渡すことを許可します。

したがって、私たちのAPPLICATION_TEMPLATE.JNLPは次のよ​​うになります。

<?xml version="1.0" encoding="UTF-8"?> 
<jnlp codebase="*"> 
    <information> 
     <title>...</title> 
     <vendor>...</vendor> 
     <description>...</description> 
     <offline-allowed /> 
    </information> 
    <security> 
     <all-permissions/> 
    </security> 
    <resources> 
     <java version="1.7+" href="http://java.sun.com/products/autodl/j2se" /> 
     <jar href="launcher/launcher.jar" main="true"/> 
     <property name="jnlp...." value="*" /> 
     <property name="jnlp..." value="*" /> 
    </resources> 
    <application-desc main-class="..."> 
     * 
    </application-desc> 
</jnlp> 

問題は* アプリケーション-DESCタグの内側にあります。

(以下のコードを参照)は、複数の引数タグを使用して、引数の固定数をワイルドカードすることが可能であるが、アプリケーションに多少の引数を提供することは不可能である(のJava Web Startのは空とのない開始意志引数タグ)。

<application-desc main-class="..."> 
     <argument>*</argument> 
     <argument>*</argument> 
     <argument>*</argument> 
    </application-desc> 

誰かがこの問題を確認し、および/またはJavaアプリケーションに実行時の引数の前に未定義の番号を渡すためのソリューションを持っていることができていますか?

ありがとう!

答えて

8

JNLP 7仕様を読んだ後でわかるように、あなたが望むものはできないようです。アスタリスクは、複数のXML要素ではなく、テキストデータのみを表すことができます。

状況によっては、mainメソッドを1つの引数を独自に解析できるため、カスタムセパレータを使用して複数の値として扱うことができます。このような何か:

<application-desc main-class="com.example.app.Main"> 
    <argument>--args</argument> 
    <argument>*</argument> 
</application-desc> 

そして、あなたの実際は.jnlpファイルをのようなもの含めることができます::これはテンプレートが含まれていることを可能にする

public static void main(String[] args) { 
    if (args.length == 2 && args[0].equals("--args")) { 
     args = args[1].split(";;"); 
    } 

    // Continue as normal 
} 

<application-desc main-class="com.example.app.Main"> 
    <argument>--args</argument> 
    <argument>files.txt;;29;;true;;1384212567908</argument> 
</application-desc> 
+0

をあなたは正しい、これはですね実際にJNLPのみの方法がない場合、私はあなたのソリューションをこれに使用します。どうも! – Andy

関連する問題