1

この質問の一般的な性質についてお詫び申し上げます。

私はここ数ヶ月Javaを学び、いくつかの機能を備えたいくつかの簡単なプロジェクトを作成しました。プロジェクトを友人に送りたかったのですが、数え切れないほどのエラーや苦労がありました。.jarファイルを渡すと、ファイルを開こうとしたときに「メインクラスが見つかりません」というエラーが発生します。

サードパーティのソフトウェアを使用して.jarファイルを.exeファイルにラップしようとしましたが、同じエラーが引き続き発生します。

それを超えて、サードパーティのソフトウェアを介して.exeファイルにラップされた.jarファイルを渡すことは、Javaの使用目的ではないと確信しています。私はJavaに関する2冊の本を読みましたが、それらはすべて言語の構造化について語っていますが、ファイルで渡すことを意図していないことが痛々しいほど明らかになったため、このコードを使用することになっている場所について混乱しています。フォーマット。

これはサーバープログラミング言語ですか?主にウェブサイトのバックエンドで使用されますか?Javaで書かれたコードをどこで使うのかわかりません。

4

5 に答える 5

4

実行可能jarをビルドする必要があります。

ここここをチェックしてください。

于 2012-12-03T04:55:49.920 に答える
2

誰かがJARファイルを実行できるようにする場合は、JARファイルを実行可能JARファイルとして作成する必要があります。これが、Java実行可能ファイルを送信する方法です。詳細については、こちらをご覧ください。

実行可能なJavaプログラムを作成するにはどうすればよいですか?

于 2012-12-03T04:55:46.373 に答える
1

http://docs.oracle.com/javase/tutorial/で時間を過ごすことをお勧めします。Javaプログラムは、基本的に仮想マシン上で実行されます(物理マシン上で直接実行されるのではありません)。Javaプログラムは*.classファイルにコンパイルされ、*。classのコレクションは通常*.jarファイルにバンドルされます。

Javaプログラムを実行する場合、一般的な方法の1つは、Java仮想マシンランタイム(JRE)を実行し、クラスパスにロードするjarパッケージを指定することです。例:

java -jar /path/to/my.jar

jarファイルは、メインクラス(存在する場合)が示されるように適切にパッケージ化する必要があります。

jarをexeにパッケージ化することは可能ですが、ベストプラクティスではありません。Javaパラダイムは、一度だけ書き込みとコンパイルを行うことで、どこでも実行できます。

于 2012-12-03T04:55:23.460 に答える
1

Oracleから:

JARファイルにアプリケーションがバンドルされている場合は、JARファイル内のどのクラスがアプリケーションのエントリポイントであるかを示す方法が必要です。この情報は、マニフェストのMain-Classヘッダーで提供します。これは、一般的な形式です。

Main-Class:classname値classnameは、アプリケーションのエントリポイントであるクラスの名前です。

エントリポイントは、署名public static void main(String [] args)を持つメソッドを持つクラスであることを思い出してください。

マニフェストにMain-Classヘッダーを設定した後、次の形式のjavaコマンドを使用してJARファイルを実行します。

java -jarJAR-nameMain-Classヘッダーで指定されたクラスのmainメソッドが実行されます。

JARツールを使用したエントリポイントの設定:

JDK 6で導入された「e」フラグ(「エントリポイント」の場合)は、マニフェストのMain-Class属性を作成またはオーバーライドします。jarファイルの作成または更新中に使用できます。マニフェストファイルを編集または作成せずに、アプリケーションのエントリポイントを指定するために使用します。たとえば、このコマンドは、マニフェストのMain-Class属性値がMyAppに設定されているapp.jarを作成します。

jar cfe app.jar MyApp MyApp.class次のコマンドを実行して、このアプリケーションを直接呼び出すことができます。

java -jar app.jarエントリポイントクラス名がパッケージに含まれている場合は、「。」を使用できます。(ドット)区切り文字としての文字。たとえば、Main.classがfooというパッケージにある場合、エントリポイントは次の方法で指定できます。

jar cfe Main.jar foo.Main foo / Main.class

アプリケーションのエントリポイントの設定

于 2012-12-03T05:04:24.563 に答える
0

簡単に言うと、ライブラリはjarにバンドルされており、別のアプリケーションのクラスパスに追加されます。

他のすべてよりも高速な新しいソートアルゴリズムを発明したふりをします。少数のクラスをjarにバンドルすることができます。これは、基本的に、コンパイルされた.classファイルを含む単なるzipファイルです。

今、あなたの友人はいくつかのデータをソートする必要があり、あなたのクラスを使用したいと思っています。彼は自分のコードを記述してクラスをインポートし(.javaファイルの先頭にあるimportを使用して)、コードでそれらを操作します。彼が.javaファイルを.classファイルにコンパイルするときが来たとき、彼はあなたのjarファイルを彼のクラスパスに追加しました。Eclipse / netbeansでこれを設定できます。または、コマンドラインからjavacを実行している場合は、次のようになります。

javac ... -cp "fastsorting.jar" ...

時々(まれに、現実の世界では)誰かが実際に実行されることを意図した本格的なプログラムであるJARを持っています。jarはソフトウェアを配布する最も一般的な方法ではないため、私はめったに言いません。より人気があるのは、Webサービスとして、またはWebサイト上のアプレットを介したものです。この場合、jarのマニフェストファイル(このjarに関するJava情報を通知するテキストファイルのみ)にはメインクラスがあり、jarがを介して呼び出されたときに実行されますjava

于 2012-12-03T05:01:12.347 に答える