- PR -

【コマンドラインでjava内のメソッドを実行】

投稿者投稿内容
fight
ベテラン
会議室デビュー日: 2005/09/25
投稿数: 74
投稿日時: 2006-11-29 19:13
コマンドラインでclassファイル内のメソッドを実行したいです。
こんなことって可能なのでしょうか?
ご存知の方がいらっしゃいましたら教えていただけるとありがたいです。よろしくお願いします。

PS 
他の言語だったら可能だったりしますか?
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2006-11-29 19:41
Javaは起動用のメソッドが決まっています。
コード:
/** 起動用メソッド */
public static void main(String[] args) {
    // 実処理
}


このメソッドがあるクラスであればどのクラスからでも起動はできます。

特定のクラスの特定のメソッドを呼んでくれるJavaのプログラムを
作りたいのであれば「リフレクション」で検索すれば調べられます。

そこまで言語をたくさん知らないけど、起動位置って定まってる言語が多数派では。
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2006-11-29 21:17
JRuby、Jython、Groovyなどを使えば、スクリプトファイルをロード
したり、コマンドラインのパラメータを使って、特定のメソッド
を実行したりできると思いますよ。awkみたいに、コマンドラインに
スクリプト自体を記述することもできるかもしれませんが、
お調べください。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2006-11-29 21:22
実行したいメソッドを呼び出すmainメソッドを持つ、
クラスを必要分書けばいいと思います。

特定のケースでしか必要ないと思いますし、
汎用的に使いたいなら、もっと別の解決方法を考えるべきで、
そもそもの設計がおかしいです。
びしばし
大ベテラン
会議室デビュー日: 2002/03/13
投稿数: 181
投稿日時: 2006-11-30 10:30
ああ、あると便利そうですね。

Windows PowerShell(Monad)ではシェルスクリプトから.netライブラリを利用できますから、将来javaも同様のことをしてくれるかもしれません。
http://www.atmarkit.co.jp/fdotnet/special/powershell01/powershell01_01.html
fight
ベテラン
会議室デビュー日: 2005/09/25
投稿数: 74
投稿日時: 2006-12-04 17:32
Javaではmainメソッドしか呼ぶことができない仕様のようですね。
JRuby、Jython、Groovy使うようにします。
ありがとうございました。
だっちょ
大ベテラン
会議室デビュー日: 2006/12/05
投稿数: 115
投稿日時: 2006-12-05 17:39
参考までに、
Java6
http://download.java.net/jdk6/binaries/
ではjrunscriptツールがあってオブジェクトを生成したり、呼び出すことができます。
JSR274の実装のBeanShell
http://beanshell.org/
でもできます。
 しかし、直接コマンドなどと振り分けて便利な上、
Visual J#でコンパイルして.Netが呼べるので、
自作ツールを使ってます。
Smz
会議室デビュー日: 2006/11/22
投稿数: 9
投稿日時: 2006-12-12 17:07
こんなカンジでしょうか?

・引数でメソッド名を指定する。
・mainメソッド内で自らのインスタンスを作成
・そのインスタンスからgetClassしてさらにそれをgetMethodする。
 (getMethodの引数にmainの引数を指定する)
・invokeメソッドを実行

今更ですけど・・・

スキルアップ/キャリアアップ(JOB@IT)