2012-03-30 23 views
38

私は、単一のフレームを持つJavaアプリケーション(プロジェクトを持つアプリケーションではなく、プロジェクト; .java内のアプリケーション)を使って簡単なプログラムを書いていました。両方のファイルは.javaなので、JARに必要なマニフェストを書くことはできません。 MyApp.javaはpackageを持つクラスのように起動し、パブリッククラスのMyApp {をインポートし、主な機能を持ちますが、まだ.javaです!私がJDeveloper 11gで手助けしているのですが....javaからJARを作る方法

これらのファイルからJARを作成する方法はありますか?単純にコマンドラインで

+1

私は、これは、このようなANTやMaven – Churk

+0

がチャックに同意してパッケージ化ツールを使って、はるかに容易に達成することができると思います。 ANTを見てください。 IDEは開発には最適ですが、どのように動作するのかを理解する必要があります。 Javaファイルはjavacから.classファイルにコンパイルされます。この後、.classファイルはjarコマンドでjarファイルにパッケージ化できます。 (Antにはこれを行うためのタスクがあり、jdeveloperでもこれを行うためのウィザードがあります)。 – BigMike

+0

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

答えて

15

javac MyApp.java 
jar -cf myJar.jar myApp 

確かにIDEには、コマンドライン端末

+7

上記はうまくいきましたが、myAppの '.class 'を指定する必要がありました。だから、ここにも 'myJar.jar myApp.class' – Navigatron

+2

スペルミス-cf瓶であり、それには、パッケージ文がありませんを前提としています。十分ではありません。 – EJP

53

開き、コマンドプロンプトを使用して避けます。あなたの.javaファイルを持つディレクトリ

Goではエラーがビルド中に、存在しない場合は、コマンドライン

javac -d ./build *.java 

から

実行Javaコンパイルを構築するディレクトリを作成します。ディレクトリにはクラスツリーが必要です

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

マニフェストチェックjarコマンドラインを追加するため
jar cvf YourJar.jar * 

は、これは、IDEから直接、端末なしで行うことができる

+0

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

+0

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

+0

@ user1303007ここをクリックhttp://www.oracle.com/technetwork/articles/adf/part4-098813.html – BigMike

4

を切り替えます。例えば、Netbeans。

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

多くの場合、あなたはそうのように、マニフェストを指定したいと思うでしょう:

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

読み取る:「冗長jarFilename manifestFilenameを作成する」、含めたいファイルが続きます。 Verboseは、何をしているのかに関するメッセージを表示することを意味します。

あなたが提供するマニフェストファイルの名前は何でもかまいません。jarは自動的に名前を変更し、jarファイル内の正しいディレクトリに入れます。

5

[OK]を、これは代わりにここで、私は見つけることが好きだろうなソリューションです私はそれを書く:それはmy.super.applicationがある場合

まず、.javaファイル用に定義されたパッケージに対応するディレクトリ構造を作成しますコマンドラインから、その後

をディレクトリ「私」とその中に「スーパー」とその内部の.javaファイル「App.java」を作成します。下の場合は、上記の

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

通知は、複数のライブラリが含まれます窓は "、"複数のファイルを別々に分ける電子GNU/Linuxの使用の下に「:」 jarファイルを作成するには

jar -cvfe App.jar App my/app/ 

上記は、メインクラスとしてアプリケーションを示し、それに対応するマニフェストでアプリケーションを作成します。 jarファイル内の必要なライブラリを含む

は、javaまたはjarコマンドラインパラメータを使用できません。

あなたが代わりにすることができます手動で

  1. は、jarファイルのルートフォルダにライブラリ
  2. は、NetbeansのようIDEを使用し、nbproject /ビルドのimplのポストジャーセクション内のルールを挿入取り出します。 xmlを使用して、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> 

は、NetBeans IDEにライブラリを追加した後file.reference名がproject.propertiesファイルの中に発見されています。

関連する問題