• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:jar ファイルに追加する方法)

jarファイルにクラスを追加する方法

このQ&Aのポイント
  • Java初心者のため、既存のjarファイルにクラスを追加する方法を知りたいです。
  • garoon3api.jarにあるclassを追加する手順を教えてください。
  • ネットで調べてもうまくいかず困っています。助けてください。

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

  • ベストアンサー
回答No.1

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

aru_008
質問者

お礼

ありがとうございます。 おっしゃるとおりですので試してみました。 まず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 どなたかよろしくお願い致します。

aru_008
質問者

補足

解決しました。 jarコマンドが間違っていたようで、   jar cvf garoon3api.jar garoon3api ではなく   jar cvf garoon3api.jar -C garoon3api . で作り直したらうまく動きました。 みなさまありがとうございました。

その他の回答 (1)

noname#155524
noname#155524
回答No.2

以下のディレクトリ構成になってるとして、 garoon3api.jar usecase/Hello.class 以下のコマンドで出来ないでしょうか? jar uvf garoon3api.jar usecase/Hello.class

関連するQ&A