2011-01-26 4 views
0

もう一度、今度はJavaに関する質問があります。私はProcessbuilderに(スクリプトを実行するプログラムを呼び出す)非ネイティブスクリプトを実行させる方法を教えられましたが、私はJavaスクリプトを実行しようとしていて、いくつかの問題に遭遇しました。まず、.classまたは.jarを使用する必要がありますか?これらの両方を実行することができますが、私はどちらかがうまくいくかどうかはわかりません。そして、それらを正しく実行するにはどうしたらいいですか?私はjava(/ usr/lib/jvm/java-6-openjdk/jre/bin/java)を呼び出して、クラスファイルにファイルパスを与えようとしましたが、動作していないようです。LinuxでProcessbuilderを開くJavaスクリプト

アイデア?

+0

私が以前に思い出したのは、2つ以上のクラスを持っていれば、 '.jar'が選択したフォーマットだったということでした。便利なプログラムのほんの一例ですから、 '.jar'を使用してください。まだ2つのクラスを持っていなくても、あなたができるチャンスはあります:)あなたは、あなたのプログラムをどのように起動するかを変更してユーザを気にしないかもしれません。 – sarnold

答えて

1

私はsarnoldに.jarの質問に関して同意します。 ProcessBuilderを使用してコードを実行する場合、このファイルにmain()メソッドが含まれていれば.jarファイルを実行でき、.jarの作成時に生成されるMain-Classマニフェストヘッダーがあります。一度作成したの.jarを持っているあなたは、あなたがの.jarを実行するには、このようなコマンドを使用したい:

java -jar jar_file_name_here.jar

あなたは複数の主要なクラスがあり、特定のものを実行したい場合は、あなたが使用することができますこのようなコマンド:

java -jar jar_name.jar com.main.class.package.path.here.SomeClassName

あなたはよその.jar誰かを実行しようとしている、またはそれはあなただけでスクリプト内で実行したいことを自分自身の一つであるされていますか?なぜあなたは好奇心の元でスクリプトを使用していますか?

+0

私は科学プロジェクトを実際にやっています。私はメインのJavaプログラムを利用して、他の言語のスクリプト群(つまり、プロセスビルダー)を実行しています。 Javaスクリプトにはちょうど1つのクラスがあります。 また、processbuilderにはプログラムとスクリプトが必要です。私は一貫性のためにすべてのスクリプトでprocessbuilderを呼び出せるようにしたいと思っています。残念なことに、プログラムを呼び出すときにフラグを使用することはできません。 – Curlystraw

+0

あなたはいつもシステムスクリプト言語を使ってプロセスを実行することもできます。 Linuxの場合は、同じことをするためのバッチスクリプトを書くことができます。もしあなたが合っていれば、プログラムからの出力を再ルーティングすることができます。私はあなたがJavaで同じことをすることができることを知っています、それはあなたがそれをスクリプトの方法でやった方がより簡単かもしれないようです... – Ampp3

+0

、それはおそらくもっと簡単でしょう。残念ながら、これは学校プロジェクト以来、私はメインプログラムのためにJavaを使用する必要があります。 .jarの作成時にmain_classを生成するにはどうすればよいですか? – Curlystraw

0

メインクラスに名前を付けるマニフェストを持つjarとパス名を指定するか、標準レイアウトでクラスを持つディレクトリのパス名を-cpにするか、 jarのパス名の後ろにmainを持つクラスの名前が続きます。

java -jar I_AM_A_JAR_WITH_A_MANIFEST.jar 

java -cp I_AM_JAR_1.jar:I_AM_JAR2.jar... this.is.my.FooClass 

java -cp dir_path1:dir_path2:dir_path3 this.is.my.FooClass 

ここで、 'dir_pathN'は標準クラス階層を持つディレクトリです。

関連する問題