- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:jar ファイルに追加する方法)
jarファイルにクラスを追加する方法
このQ&Aのポイント
- Java初心者のため、既存のjarファイルにクラスを追加する方法を知りたいです。
- garoon3api.jarにあるclassを追加する手順を教えてください。
- ネットで調べてもうまくいかず困っています。助けてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
jarファイルの実態はzipファイルなので、拡張子をzipに変えて解凍し、Helloを適切に追加してからjarを作り直せば問題ないかなとは思います。 それとも、そういう話ではないですか?
その他の回答 (1)
noname#155524
回答No.2
以下のディレクトリ構成になってるとして、 garoon3api.jar usecase/Hello.class 以下のコマンドで出来ないでしょうか? jar uvf garoon3api.jar usecase/Hello.class
お礼
ありがとうございます。 おっしゃるとおりですので試してみました。 まず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 どなたかよろしくお願い致します。
補足
解決しました。 jarコマンドが間違っていたようで、 jar cvf garoon3api.jar garoon3api ではなく jar cvf garoon3api.jar -C garoon3api . で作り直したらうまく動きました。 みなさまありがとうございました。