• ベストアンサー

jarファイルとpackageについて

僕はjava初心者なんですが、ちょっと質問です。 jarファイルとpackageの違いがわかりません。 どちらもclassファイルをまとめるものですよねぇ。 この二つのファイルの相違点がわからないので、どうか、教えてください。

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

package は、意味的な区分けで、関係のあるクラス群をグルーピングする 考え方です。.class ファイルをまとめているわけではないです。 .class ファイルは、package の階層にしたがったディレクトリに配置されます。 たいして jar ファイルは、物理的(というのも変かな?)に .class ファイル を、ひとつのファイルにまとめている(つっこんでいる)だけです。 普通、ひとつの package は、複数のクラスから構成されます。.jar ファイルを 作らなければ、その package 名がついたディレクトリに、複数の .class ファイル があります。 .jar ファイルは、(ひとつでも構わないけど)複数の package をひとつの ファイルにまとめています。 # あまり、うまい説明じゃないかも。分からなかったら、補足してください

tomatosuki
質問者

お礼

どうも、ご親切にありがとうございました。 なんとなくわかりました。(感覚的に) なんせ、まだ初心者なので、全然わからなくて・・・ また、なんらかの疑問があったときにお答えいただけると光栄です。 本当にありがとうございました。

関連するQ&A

  • JARファイル・JARコマンドに関して

    JARファイル・JARコマンドに関しての質問です。 同じクラスファイルを使用して、2つのJARファイルを作成しました。 しかし、バイナリツールでファイルを比較したところ、バイナリデータの一致が取れませんでした。 下記に、例と質問を記載します。 ご存知の方がおりましたら、ご教授よろしくお願いします。 例: 1.jar cf C:\java\test\HelloWorld1.jar C:\java\test\HelloWorld.class (クラスファイルをHelloWorld1.jarというJARファイルを作成します。) 2.jar cf C:\java\test\HelloWorld2.jar C:\java\test\HelloWorld.class (クラスファイルをHelloWorld2.jarというJARファイルを作成します。) ※HelloWorld.classはhelloと表示されるだけの簡単プログラムです。 1で作成されたJARファイルと、2で作成されたJARファイルをバイナリで比較したところ一致しませんでした。 ■質問 1.JARコマンドはJARファイルを作成する際に何をしているのでしょうか? 2.同じクラスファイルでJARファイルを作成しているのに、バイナリデータに差がでるのはなぜでしょうか? JARファイル作成時に作成時間等をファイルに保持しているのでしょうか? (作成時間が違うため、JARファイルで差がでるのでは、と推測しています・・・・) いろいろ調べてみたのですが、良い情報が見つかりませんでした。 参考URLだけでも結構です。 ご存知の方がいましたら、ご教授よろしくお願いします。m(_ _)m

    • ベストアンサー
    • Java
  • パッケージをjarファイルにするには?

    こんばんは。 単一のクラス、1つのフォルダの中にある複数のクラスをjarファイルにする方法は一応わかります。 しかし、パッケージを丸ごとjarファイルにする方法がわかりません。手順だけでも、書いていただければ結構なので、誰かわかる方ご回答のほうよろしくお願いします。 1つのフォルダ内だと、jarファイル作成時にクラス名を書けますが、パッケージとなると、下の階層の中のクラスはどの様に記述すればよいのかわかりません。 よろしくおねがいします。

    • ベストアンサー
    • Java
  • jarファイルのマニフェストについて

    JAVA初心者です。複数classをjarファイルにして実行する場合。マニフェストを登録すると、java -jarオプションで実行できると思いますが、それぞれのclassが別階層にあった場合メインクラスが見つからないとうエラーで実行できません。別階層にある場合はマニフェストは使えないのでしょうか。

    • ベストアンサー
    • Java
  • jar ファイルに追加する方法

    Java初心者で勉強中です。 既にあるjarファイルにあるclass を追加する方法ってあるのでしょうか? (1)例えば、garoon3api.jar に Hello.class を追加する場合はどうすればよいのでしょうか? (2)garoon3api.jarは、 garoon3api.jar       |----com        |----cybozu        |-----garoon3        |-----usecase のようになっていて、 usecaseの下に Hello.class を追加する方法はあるのでしょうか? ネット等で調べてはいるのですが、うまくいかず困っています。 どなたかよろしくお願い致します。

    • ベストアンサー
    • Java
  • JavaのJARファイルがうまく作成できません

    Javaプログラムを作成したのですが、Jarファイルがうまく作成できません。 (Javaプログラムの作成経験はありますが、Jarファイル作成は初めてです) どなたか解決方法をご教授下さい。 4つのソースプログラムがあります。 1) D:\Java\x\y\Random\a.java 2) D:\Java\x\y\Random\b.java 3) D:\Java\x\y\Random\c.java 4) D:\Java\x\y\Random\d.java ■1:Windowsのコマンドプロンプトで、 cd D:\Java javac x\y\Random\*.java と入力して、エラーが発生する事なく、コンパイルできました。 (D:\Java\x\y\Randomフォルダに、a.class, b.class, c.class, d.classファイルができました) ■2:次に(Windowsのコマンドプロンプトで) java x.y.Random.myClass と入力して、期待通り動作しました。 上記1)~4)のjavaソースプログラムは次のようにコーディングしています。 1) a.java package x.y.Random; ・・・ class myClass { public static void main(String args[]) { ・・・ } } 2) b.java package x.y.Random; ・・・ 3) c.java package x.y.Random; ・・・ 4) d.java package x.y.Random; ・・・ ここまではうまく行っており、問題ありません。 ■3: 次のコマンドを実行すると、 jar cvf x.y.Random.jar x\y\Random 何もエラーは発生せず、以下のようなメッセージが10行程度表示され、 ・・・を追加中です。(入=xx)(出=yy)(nn%収縮されました) 「x.y.RandomNum.jar」ファイルが作成されましたが、 このjarファイルをダブルクリックすると、以下のダイアログボックスが表示されます。 ・ダイアログボックスのタイトル Java Virtual Machine Launcher ・エラーメッセージ Failed to load Main-Class manifest attribute from D:\Java\x.y.Random.jar 宜しくお願い致します。

    • ベストアンサー
    • Java
  • jarファイル内のクラスからjarファイル名の取得

    こんにちわ!yukimura1024です。 ちょっとわかりにくいタイトルかもですが質問です(^^; ○前提条件 1.コマンドプロンプトで以下のようにjarファイルを実行します。  java -jar xxx.jar xxx1 xxx2 2.xxx.jarのなかはx.class、y.class、z.class、と3つのクラスがあり、   x.classのmainメソッドが最初に呼び出されます。 ○質問 上記条件のとき、x.classのmainメソッド内で「xxx.jar」という文字列を取得したいのですが こんなことは可能でしょうか? なぜこんなことをしたいのかというと以下の理由からです。 1.xxx.jarのほかにyyy.jarというjarファイルも作成し、x.class、y.class、z.classを格納する。 2.yyy.jarも最初にx.classのmainメソッドが呼び出される。 3.x.classのmainメソッド内でxxx.jar、yyy.jarのどちらとして呼び出されたのか知りたい! ※2つのjarファイルに格納するx.class、y.class、z.classはまったく同じものです。 アドバイスいただける方いましたらお願いします。

    • ベストアンサー
    • Java
  • 作ったjarファイルが起動しません。

    Eclipseでエクスポートしたjarファイルが起動しません。 hello.jarというのを作ったのですが コマンドプロンプトを使って java -jar hello.jar ならば正常に起動します。 マニフェストファイルはちゃんとできているように思います。 他の(自分で作ったものでない)JARファイルは普通に動きます。 コードは package hello.konnnitiha; public class Hello { public static void main(String[] args){ System.out.println("Hello!"); } } マニフェストファイルは Manifest-Version: 1.0 Main-Class: hello.konnnitiha.Hello となっています。 ちなみにコマンドプロンプトで java hello.jar で起動しようとすると Exception in thread "main" java.lang.NoClassDefFoundError: hello/jar Caused by: java.lang.ClassNotFoundException: hello.jar at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) Could not find the main class: hello.jar. Program will exit. となります。

  • Jarファイルの実行・・・

    as-naoki@東京です。 さてさて、早速本題ですが、 Dos窓から「java aaa」で正常に起動する aaa.classがあります。 マニフェストファイルの内容を「 Main-Class: aaa 」 としてJarファイルを作成したのですが、このファイルをダブルクリックしても、 何も起こりません。タスクマネージャで確認したら裏でjavaw.exeは走っていましたが、Javaアプリは起動しません。 いろいろと情報を集めてみたのですが、どうにも解決に至らず、投稿させて頂きます。

  • 実行可能jarファイルについて!

    実行可能jarファイルについて! java -jar Foo.jar Foo というやり方で、実行可能jarファイルにあるクラスの中から実行するクラスを指定できるという記述があったので、試してみたのですが、うまくいきません。 http://mibai.tec.u-ryukyu.ac.jp/~oshiro/Doc/java_primer/ExecutableJarfile.html どうしても、マニフェストファイルに書かれたクラスが実行されてしまいます。 マニフェストファイルはこちらの内容になります。 Manifest-Version: 1.0 Rsrc-Class-Path: ./ geronimo-jta_1.1_spec-1.0.jar s2-dao-1.0.49.jar co mmons-logging-1.1.jar poi-3.0-FINAL.jar aopalliance-1.0.jar s2-dao-ti ger-1.0.49.jar junit-3.8.2.jar teeda-core-1.0.13-sp7.jar geronimo-ser vlet_2.4_spec-1.0.jar cglib-nodep-2.1_3.jar s2-extension-2.4.40.jar s 2-tiger-2.4.40.jar easymock-2.4.jar teeda-webunit-0.2.2.jar teeda-aja x-1.0.13-sp7.jar teeda-tiger-1.0.13-sp7.jar ojdbc6.jar easymockclasse xtension-2.4.jar commons-lang-2.4.jar javassist-3.4.ga.jar teeda-xmlu nit-0.1.0.jar log4j-1.2.13.jar teeda-extension-1.0.13-sp7.jar ognl-2. 6.9-patch-20090427.jar junit-4.4.jar junit-addons-1.4.jar s2-framewor k-2.4.40.jar h2-1.0.69.jar Class-Path: . Rsrc-Main-Class: jp.co.tsys.sfi.batch.execute.TagOutputExecute Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader jarファイルは、Eclipseの実行可能jarファイルの出力で、エクスポートしました。 よくみると、Main-ClassがEclipseのクラスになっているので、そこが違うのかな、と予想しています。 なぜ、Eclipseのエクスポートを使っているかというと、ライブラリのjarファイル群をjarファイルに取り込むのに便利だと思ったからです。 →これさえできれば、ほかの方法で構いません。 どうかよろしくお願いします!

    • ベストアンサー
    • Java
  • JARファイルの利点について

    本日はJARファイルについて質問いたします。 たまにみかけるのですが、クラスファイルのあるパッケージを集めてJARファイル化してサーバーに搭載することがあります。 これはクラス一つ一つ登録することと何が違うのでしょうか? 教えてください。

    • ベストアンサー
    • Java

専門家に質問してみよう