.javaファイルからJARを作成するにはどうすればよいですか?


88

私は、単一のフレームを持つJavaアプリケーション(プロジェクトを持つアプリケーションではなく、プロジェクト内のアプリケーション; .java)を使用して単純なプログラムを作成していました。どちらのファイルも.javaであるため、JARに必要なマニフェストを作成できません。

MyApp.javaは、パッケージとクラスのように輸入後、パブリッククラスを開始MyAppし、主な機能を持っているが、それはまだの.javaファイルです!役立つ場合は、JDeveloper11gで記述しています。

これらのファイルからJARを作成する方法はありますか?


1
これは、ANTやMavenなどのパッケージツールを使用することではるかに簡単に達成できると思います
Churk 2012年

チャックに同意します。ANTを見てください。IDEは開発に最適ですが、物事がどのように機能するかを理解する必要があります。javaファイルはjavacを介して.classファイルにコンパイルされます。その後、jarコマンドを使用して.classファイルをjarにパッケージ化できます。(Antにはこれを行うためのタスクがあり、jdeveloperでさえこれを行うためのウィザードがあります)。
BigMike 2012年

JDeveloper自体にjarファイルを作成する機能が必要です。:迅速なGoogle検索はここHOWTOを思い付くtompeez.wordpress.com/2011/06/01/...
stolzem

1
あなたの質問を明確にできますか?
Romain Hippeau 2012年

ソースディレクトリとrunコマンドに移動します: - JarName.jar * .classファイルCVFのjavac * .javaファイル&& jarファイル
派手

回答:


104

コマンドプロンプトを開きます。

.javaファイルがあるディレクトリに移動します

ディレクトリビルドを作成する

コマンドラインからJavaコンパイルを実行する

javac -d ./build *.java

エラーがない場合は、ビルドディレクトリにクラスツリーがあります。

ビルドディレクトリに移動して、

jar cvf YourJar.jar *

マニフェストチェックjarコマンドラインスイッチを追加する場合


コマンドラインからコンパイルしようとしましたが、エラーが発生します:Frame1.java:23:パッケージoracle.jdeveloper.layoutが存在しませんこれを解決するにはどうすればよいですか?申し訳ありませんが、初心者の質問のために...
user1303007

クラスで参照しているすべてのライブラリを参照するクラスパスを作成する必要があります。jdeveloperのインストールを確認してください。いくつかのantビルド例(build.xmlファイル)と、OracleのサイトでANTとともにjDeveloperを使用する方法に関する少なくとも2つの優れたチュートリアルがあるはずです。
BigMike 2012年


1
Main-Classをマニフェストに自動的に追加するオプションをjarコマンドに追加しjar cfe Main.jar Main *ました... (混乱しましたが、出力ファイル名の後にMain-Class名を入力する必要がありました。)
Klaider

32

単にコマンドラインで:

javac MyApp.java
jar -cf myJar.jar MyApp.class

確かにIDEはコマンドラインターミナルの使用を避けます


11
上記は機能しましたが、.classmyAppのを指定する必要がありました。つまりjar -cf myJar.jar myApp.class
Navigatron 2015

3
ここでもスペルミスがあり、パッケージステートメントがないと想定しています。十分ではありません。
user207421 2015

14

わかりました、これは私が見つけたかった解決策です、代わりにここに私はそれを書きます:

まず、.javaファイル用に定義されたパッケージに対応するディレクトリ構造を作成します。my.super.applicationの場合は、ディレクトリ「my」を作成し、その中に「super」を作成し、その中に.javaファイル「App.java」を作成します。

次にコマンドラインから:

   javac -cp /path/to/lib1.jar:/path/to/lib2.jar path/to/my/super/App.java

上記のライブラリには複数のライブラリが含まれていることに注意してください。Windowsでは「、」を使用して複数のファイルを分離し、GNU / Linuxでは「:」を使用してjarファイルを作成します。

   jar -cvfe App.jar App my/app/

上記は、アプリをメインクラスとして示す対応するマニフェストを持つアプリケーションを作成します。

javaまたはjarコマンドラインパラメータを使用して、必要なライブラリをjarファイル内に含めることはできません。

代わりに、次のことができます。

  1. ライブラリをjarファイルのルートフォルダに手動で抽出します
  2. NetbeansなどのIDEを使用し、nbproject /build-impl.xmlのpost-jarセクション内にルールを挿入して、jar内のライブラリを抽出します。下記参照。
<target name="-post-jar">
        <!-- Empty placeholder for easier customization. -->
        <!-- You can override this target in the ../build.xml file. -->
  <jar jarfile="${dist.jar}" update="true">  
            <zipfileset src="${dist.jar}" includes="**/*.class" />  
            <zipfileset src="${file.reference.iText-1.0.8.jar}" includes="**/*"/>
      <zipfileset src="${file.reference.itextpdf-3.2.1.jar}" includes="**/*"/>
  </jar>
    </target>

file.reference名は、ライブラリをNetbeans IDEに追加した後、project.propertiesファイル内にあります。


9

多くの場合、次のようにマニフェストを指定する必要があります。

jar -cvfm myJar.jar myManifest.txt myApp.class

「詳細なjarFilenamemanifestFilenameを作成する」の後に、含めるファイルが続きます。詳細とは、実行内容に関するメッセージを印刷することを意味します。

指定するマニフェストファイルの名前は任意であることに注意してください。jar自動的に名前が変更され、jarファイル内の適切なディレクトリに配置されます。


6

これは、ターミナルなしで、IDEから直接実行できます。たとえば、Netbeans。

  1. パッケージを使用して別のプロジェクトを作成します(プロジェクトの作成-Java-Javaクラスライブラリ)。
  2. そこに.javaクラスを配置します。
  3. このプロジェクトをビルドします。
  4. プロジェクトフォルダーに移動し、そこでbuildフォルダーとdistフォルダーを見つけます。
  5. distフォルダーで.jarファイルを見つけます。
  6. 他のプロジェクトを取得し、この.jarファイルをプロジェクトライブラリに追加します。
  7. インポートが自動的に行われる場合は、このライブラリのクラスとそのメソッドをコードから直接参照できるようになりました。

3

これを行う別の素晴らしい方法は次のとおりです。

$ ls | grep .java | xargs -I {} javac {} ; jar -cf myJar.jar *.class

これls | grep .javaにより、現在のディレクトリからすべての.javaファイル()が取得され、それらが.class(xargs -I {} javac {})にコンパイルされてから、以前にコンパイルされたクラス(jar -cf myJar.jar *.class)からjarファイルが作成されます。


2

おそらく、JavaコードからJARをコンパイルする最も初心者に優しい方法は、NetbeansやEclipseなどのIDE(統合開発環境。基本的には開発用のユーザーフレンドリーなソフトウェア)を使用することです。

  • IDEをインストールしてセットアップします。 これがEclipseの最新バージョンです
  • IDEでプロジェクトを作成し、Javaファイルをプロジェクトフォルダー内に配置します。
  • IDEでプロジェクトを選択し、プロジェクトをJARとしてエクスポートします。エクスポートするときに、適切なJavaファイルが選択されていることを再確認してください。

これは、コマンドラインを使用していつでも非常に簡単に実行できます。次のようなコマンドを実行する前に、対象のファイルと同じディレクトリにいることを確認してください。

javac YourApp.java
jar -cf YourJar.jar YourApp.class

...「YourApp」と「YourJar」をそれぞれファイルの固有名詞に変更します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.