コマンドライン引数を取得できますか

コマンドライン引数の取得

標準実行とWeb Start実行では、run関数の引数で受け取れます。 ブラウザ実行とモバイルではFX.getArgument関数で取得できます。 Web Start実行の引数はjnlpファイルに書きます。ブラウザ実行の引数はjnlpにもhtmlにも書けます。

モバイルについては本家のTipsである Using Advanced Deployment Features をご覧ください。ここにはモバイル以外についても参考になる情報があります。

例:

function run(args:String[]):Void{
  println("__PROFILE__ =  {__PROFILE__}");

  if(__PROFILE__ == "desktop"){
    println("args = {args.toString()}");
  }else{
    var argsWeb = for(arg in ["arg_1","arg_2","arg_3"]){
      FX.getArgument(arg)
    };
    println("args = {argsWeb.toString()}");
  }
}

コマンドライン引数のデバッグ

標準の実行

NetBeans IDEで「プロジェクトプロパティ>実行」を開き、主クラスと引数を設定してください。 スクリプトファイルにクラスが無くても構いません。設定ができたらプロジェクトを実行してください。

出力結果:

__PROFILE__ =  desktop
args = [ one, two, three ]

Web Startで実行

NetBeans IDEでビルドした後、プロジェクト配下にあるdistディレクトリをどこかよそにコピーしてください。 アプリケーション名.jnlpファイルを開き、コマンドライン引数を追加してください。 よそにコピーする理由は、ビルドするたびにjnlpファイルが再作成されて修正が無効になるからです。

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="file:/J:/dist/JavaFXTips/" href="JavaFXTips.jnlp"><!-- ★パス変更★ -->
    <information>
        <title>JavaFXTips</title>
        <vendor>Takaaki NAKAMURA</vendor>
        <homepage href="file:/J:/dist/JavaFXTips/"/><!-- ★パス変更★ -->
        <description>JavaFXTips</description>
        <offline-allowed/>
        <shortcut>
            <desktop/>
        </shortcut>
    </information>
    <resources>
        <j2se version="1.5+"/>
        <extension name="JavaFX Runtime" href="http://dl.javafx.com/1.2/javafx-rt.jnlp"/>
        <jar href="JavaFXTips.jar" main="true"/>
    </resources>
    <application-desc main-class="com.sun.javafx.runtime.main.Main">
        <argument>MainJavaFXScript=com.hisagisoft.javafx.tips.RunFunction</argument>
        <argument>one</argument><!-- ★引数追加★ -->
        <argument>two</argument><!-- ★引数追加★ -->
        <argument>three</argument><!-- ★引数追加★ -->
    </application-desc>
    <update check="background">
</jnlp>

追加できたらアプリケーション名.jnlpファイルをダブルクリックで実行してください。 Javaコンソールに結果が出ます。

出力結果:

__PROFILE__ =  desktop
args = [ one, two, three ]

ブラウザで起動(アプレット)

jnlpの引数もhtmlの引数も受け取ることができます。 前述のようにdistディレクトリをよそにコピーしてアプリケーション名_browser.jnlpを修正します。

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="file:/J:/dist/JavaFXTips/" href="JavaFXTips_browser.jnlp"><!-- ★変更★ -->
    <information>
        <title>JavaFXTips</title>
        <vendor>Takaaki NAKAMURA</vendor>
        <homepage href="file:/J:/dist/JavaFXTips/"/><!-- ★変更★ -->
        <description>JavaFXTips</description>
        <offline-allowed/>
        <shortcut>
            <desktop/>
        </shortcut>
    </information>
    <resources>
        <j2se version="1.5+"/>
        <extension name="JavaFX Runtime" href="http://dl.javafx.com/1.2/javafx-rt.jnlp"/>
        <jar href="JavaFXTips.jar" main="true"/>
    </resources>
    <applet-desc name="JavaFXTips" main-class="com.sun.javafx.runtime.adapter.Applet" width="200" height="200">
        <param name="MainJavaFXScript" value="com.hisagisoft.javafx.tips.RunFunction"/><!-- ★最後のスラッシュを忘れずに★ -->
        <param name="arg_1" value="one"/><!-- ★追加★-->
    </applet-desc>
    <update check="background">
</jnlp>

続いてアプリケーション名.htmlも修正して、arg_2とarg_3のブロックを追加してください。

javafx(
    {
          archive: "JavaFXTips.jar",
          draggable: true,
          width: 200,
          height: 200,
          code: "com.hisagisoft.javafx.tips.RunFunction",
          name: "JavaFXTips"
    },
    {
          arg_2: "two",
          arg_3: "three"
    }
);

アプリケーション名.htmlをダブルクリックしてください。Javaコンソールに結果が出ます。

出力結果:

__PROFILE__ =  browser
args = [ one, two, three ]


カウンター

Home