2016-05-03 7 views
0

java -jar Name.jar arg1 arg2 arg3 を次のように私はjarファイルを実行する場合には(.jarファイルを作成する)エクスポートするときがあるかもしれないので、私はメインメソッドを識別するために、Eclipseの実行コンフィギュレーションを指定しなければならなかったであろうことが分かりますクラスと同じくらい多くの主要なメソッドがあります。Eclipseの実行構成迷惑

Eclipse内でメインプログラムを実行すると、新しい実行コンフィギュレーションが自動的に作成され、エクスポートするときに実行コンフィギュレーションの選択肢がさらに混乱します。私が多くのクラスでこれを行うと、主な方法が指定されているだけで、多くの本質的に同じ実行コンフィギュレーションがある可能性があります。

java -cp Name.jar package.MyObject arg1 arg2

java -cp Name.jar package.MyOtherObject arg1

を次のように私はjarファイルを実行する場合は、mainメソッドを識別し、Eclipseの実行構成がおそらく無視されます。エントリポイントはコマンドラインで識別されます。この場合、エクスポートプロセス中にEclipseが実行コンフィギュレーションを必要とするという事実は雑用を作り出すようですが、これを避ける方法はないようです。

多くのエントリーポイントにアクセスできるため、私は.jarを-cpオプションで実行することをお勧めします。このようにして、別のエントリポイントにアクセスしたいときに再エクスポートする必要はありません。使用するエントリポイントの決定は、実行したい時間まで延期されます。私は輸出時に決める必要はありません。私は柔軟性を保ちます。

私は、タスクを指定するarg1を持っていることを知っています。大きなスイッチステートメントを持つメインメソッドを特定し、常に-jarオプションでJavaを起動する1つの実行構成に依存できます。

-jarを使用すると、多くの実行コンフィギュレーションが混乱します。 -cpを使用すると、多くの実行コンフィギュレーションが混乱するエクスポートプロセスには迷惑なステップがあるようです。これらの問題の両方を回避するEclipseを使用する方法はありますか?

答えて

0
  1. は、プロジェクトを開き、FileExportJavaを選択してJAR fileRunnable JAR fileを選択しないでください。

    デフォルトでは、プロジェクトフォルダ内のすべてのファイルは、エクスポートするリソースとしてチェックボックスが付けられており、その一部またはすべてのチェックを外したい場合があります。残念ながら、Eclipseはこれを覚えていないので、エクスポートするたびにリソースのチェックを外す必要があるかもしれません。

  2. srcディレクトリをチェックしてください。残念ながらソースをエクスポートするように見せていますが、実際には対応する.classファイルをエクスポートするにはチェックボックスをオンにする必要があります。

  3. チェックボックスExport generated class files and resources

  4. エクスポートまたは上書きする宛先JARファイルを参照します。

  5. finishをクリックします。

  6. Eclipseでは、サードパーティのJARファイルを上記の手順2のリソースと見なさないため、Javaを呼び出すときに-classpathまたは-cpに提供する方法を見つける必要があります。これを行う必要がある理由は、Eclipseが「JARファイル」をエクスポートするときに、サードパーティのJARファイルへのビルド・パスに従わないためです。これは、「Runnable JARファイル」をエクスポートするときにEclipseが持つ機能ですが、ここではそうではありません。サードパーティのJARファイルのディレクトリを手動で作成し、Javaに-classpathのワイルドカードを展開させることができます。 Linuxでの

例Java呼び出し:

java -cp ~/directory/destination.jar:/home/username/directory/thirdparty/"*" com.domain.package.MyObject arg1 arg2 arg3

注Linux上で私たちはbashは、自分自身のJARファイルの "destination.jar" を~を拡張できるようにすることができていること。サードパーティ製のJARファイルの場合、長い形式の/home/usernameが使用されます。これは、チルダの展開が文字列の中央、つまりコロンの直後では機能しない可能性があるためです。

我々は、Java *ワイルドカードを使用したい場合は - ワイルドカードためには、サードパーティのJARファイルに対して、*文字(リテラル製)引用されなければならない - ないbashのコマンドラインのワイルドカードと同じことをJavaに渡されます。

このようにエクスポートすると、実行コンフィギュレーションを選択する必要がなくなり、問題の原因となった問題が解決されます。別に

:あなた自身のJARは、サードパーティのJARファイルと同じディレクトリにエクスポートされている場合、クラスパスは簡単です:

java -cp ~/singleDirectory/"*" com.domain.package.MyObject arg1 arg2 arg3