牛、豚、鶏、どれか一つ食べられなくなるとしたら?

Java初心者で勉強中です。

既にあるjarファイルにあるclass を追加する方法ってあるのでしょうか?
(1)例えば、garoon3api.jar に Hello.class を追加する場合はどうすればよいのでしょうか?

(2)garoon3api.jarは、

garoon3api.jar
      |----com
       |----cybozu
       |-----garoon3
       |-----usecase

のようになっていて、
usecaseの下に Hello.class を追加する方法はあるのでしょうか?


ネット等で調べてはいるのですが、うまくいかず困っています。
どなたかよろしくお願い致します。

A 回答 (2件)

jarファイルの実態はzipファイルなので、拡張子をzipに変えて解凍し、Helloを適切に追加してからjarを作り直せば問題ないかなとは思います。


それとも、そういう話ではないですか?

この回答への補足

解決しました。

jarコマンドが間違っていたようで、

  jar cvf garoon3api.jar garoon3api

ではなく

  jar cvf garoon3api.jar -C garoon3api .

で作り直したらうまく動きました。

みなさまありがとうございました。

補足日時:2011/01/05 14:54
    • good
    • 0
この回答へのお礼

ありがとうございます。
おっしゃるとおりですので試してみました。

まずgaroon3api.jarを解凍して、
Hello.classを garoon3api\com\cybozu\garoon3\usecase の配下に追加して、

以下のコマンドでjarファイルを作り直しました。
(何故か最初のjarファイルに比べサイズが小さくなっていました)

jar cvf garoon3api.jar garoon3api

新しく作ったgaroon3api.jarで、Hello.classを動かそうとしましたが、
うまく動きませんでした。

何が間違っているのでしょうか?



以下エラー内容
----------------------------------------------------------------
C:\work\test\Java\jar>java -cp garoon3api.jar com.cybozu.garoon3.usecase.Hello
Exception in thread "main" java.lang.NoClassDefFoundError: com/cybozu/garoon3/usecase/Hello
Caused by: java.lang.ClassNotFoundException: com.cybozu.garoon3.usecase.Hello
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: com.cybozu.garoon3.usecase.Hello. Program will exit.
----------------------------------------------------------------

ちなみに、jarの-tfオプションで確認したら、Hello.classはありました。
garoon3api/com/cybozu/garoon3/usecase/Hello.class


どなたかよろしくお願い致します。

お礼日時:2011/01/04 18:09

以下のディレクトリ構成になってるとして、


garoon3api.jar
usecase/Hello.class
以下のコマンドで出来ないでしょうか?
jar uvf garoon3api.jar usecase/Hello.class
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報