Application.launch
メソッドは、インスタンスメソッドではなく、クラスメソッドです。
myapp.launch(args)
のように、インスタンスメソッドとして呼び出されるようには作られていません。
回避するには、引数が2つのオーバーロードメソッドを使います。
lang
1// main関数
2Application.launch(MyApplication.class, args);
補足:launch
メソッドは、launch
メソッドを呼び出したメソッドが所属するクラス(今回の場合はSampleMain
クラス)をApplication
のサブクラスと判断してJavaFXアプリケーションを起動しようとします。
このため、他のクラスからlaunch
メソッドを使って呼び出そうとすると、そのエラーが出てしまいます。
参考URL:
Application.launch(Class, String...) (JavaFX 8 API Document)
(追記に対する回答)
コンストラクターに指定することは、正規の方法では難しいようです。
Application
のサブクラスにパラメーターを渡すには、Application#init
メソッドの中でgetParameters
メソッドを呼び出すことで、launch
で指定したargs
パラメーターを取得することができます。
上に挙げたリンクのページの先頭に、Application.launch
が呼ばれた時の内部動作について書かれていますのでそちらも参考にしてください。
また、getParameters
で取得できるParameters
クラスについては、Application.Parameters (JavaFX 8)を参照。
lang
1// importは省略
2
3public final class SampleMain {
4
5 public static void main(String[] args) {
6 Application.launch(MyApplication.class, "arg1", "arg2");
7 }
8
9}
10
11public final class MyApplication extends Application {
12
13 @Override
14 public void init() throws Exception {
15 Parameters parameters = getParameters();
16 List<String> parameterList = parameters.getRaw();
17 // => [arg1, arg2]
18 }
19
20 // 以下略
21
22}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/01/12 13:10