1

Eclipse を使用した Java のコードがいくつかあり、それを UNIX 環境にデプロイしたいと考えています。このプログラムは、実行時にいくつかの引数を取り、ファイルを読み取り、結果を出力するだけの単純なコンソール プログラムです。

UNIX環境で展開して実行するための最良のアプローチは何かという私の質問。すべてのクラス ファイルを UNIX 環境にコピーし、バッチ ファイルを作成してメイン クラス ファイルを実行することを考えていました。これは大丈夫ですか?または、実行可能な jar ファイルを作成する必要がありますか?

また、プログラムが参照しているjarファイルはどこに配置すればよいですか(クラスパス内)?

ありがとう

4

5 に答える 5

1

実行可能なjarファイルがここでの目的を解決すると思います。

次のように実行できるはずです

java -jar <jarfilename> <arguement1> <arguement2> .... <arguementN>

現在のディレクトリ自体からjarファイルを実行できますが、jarファイルに実行権限があることを確認してください。

chmod +x <jarfilename>
ls -la
于 2012-07-25T14:51:58.683 に答える
1

私の意見では、簡単に展開できるように設計することが重要です。この場合、いくつかのコンポーネントがあります。

  1. プロジェクトをソース コード管理システム (git) に保存します。ソースコードを次のように分解します

    1. dev ブランチへの開発中のソース コード
    2. ブランチをリリースするための安定したソース コード
  2. Ant や Maven などのビルド ツールを使用し、プロジェクトにデプロイ スクリプトを提供します。(デプロイ スクリプトについては 3. で説明します)。

  3. 次の目的でデプロイ スクリプトを提供します。

    1. ビルド サーバーで最新の安定したソース コードをフェッチする
    2. ビルドサーバーで実行可能ファイルにビルドします(何をしても)
    3. パッケージをターゲット サーバーに送信する
    4. ターゲット サーバーのランチャー (古いアプリを閉じて新しいアプリを実行) (リモート ssh コマンド経由)

現在、Javaをパッケージ化する方法を考えていますが、ビルドして実行するだけの簡単なことです。展開について話すときは、できるだけ簡単にします。デプロイするたびに、リリース スクリプトを呼び出すだけです。


PS。私は実行可能な jarが好きではありません。パッケージ化されていないjarとコンパイルされたクラスを使用すると、rsyncによって非常に効率的に送信できます。

于 2012-07-26T12:51:53.030 に答える
0

それはOKに聞こえ、あなたのために働くでしょう。1 つだけ修正します。バッチ ファイルではなく、UNIX 用のシェル スクリプトを記述します。

しかし、あなたはもっとうまくやることができます。通常、Java クラスは jar ファイルにパッケージ化されます。META-INFJarファイルは、オプションの、ディレクトリ、MANIFEST.MFおよびその他のものを含む単なるzipファイルです。したがって、アプリケーションを jar にパッケージ化してから、次のように実行することをお勧めしますjava -cp yourjar.jar YourMainClass

jarjar ファイルを作成するには、JDK の一部であるzip またはユーティリティを作成できる任意のツールを使用できます。アプリケーションのパッケージ化に役立つ ant、maven、gradle、bildr などを使用して自動ビルドを作成することもできます。

于 2012-07-25T14:50:45.703 に答える
0

私は次のことをします:

  1. このプログラム専用のディレクトリを作成します。依存する .jar ファイルをそのディレクトリにコピーします
  2. これらのjarを指すようにクラスパスを設定し、メインクラスを実行する(短い)スクリプトを作成します

上記を考えると、実行可能な .jar を作成するかどうかは、主にスタイルの問題です。ユーザーには表示されません。

次の理由から、スクリプトを提案しています。

  1. 定期的に使用する JVM パラメータを簡単に設定できます (メモリ オプションなど)。
  2. 入力するのは面倒です(そしてほとんど直感的ではありません)java -jar {pathtojar}

jar を専用のディレクトリにコピーすることで、異なるスクリプトに対して異なるバージョンの jar を使用できます (たとえば、2 つの異なるバージョンの commons-lang を使用する 2 つのプログラムがある場合があります)。

また、(おそらく) このスクリプトを使用して、プログラムを実行するために使用する Java のバージョンを明示的に決定する必要があります。インストール/アップグレードするときにプログラムを壊したくないので、この情報を明示的に結び付けるようにスクリプトを構成できます。

于 2012-07-25T14:54:19.917 に答える
0

私はこれが最も速いと思います:

まず、jar を作成し、UNIX サーバーにコピーして、後述の dopplesoldner のようにファイルのアクセス許可を変更します。

ライブラリ クラスや jar の依存関係をlibフォルダーに入れることができます

次に、jarを実行します

 java -Djava.ext.dirs=lib/ -classpath yourJar.jar com.yourPackage.yourClass

yourClassmain(String args[])実行したいメソッドを持つクラスになります。

于 2012-07-25T14:58:43.640 に答える