Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

packageが指定されている場合のjarの作り方

WinXP SP1,jdk1.5.0_04です。
Pathを通してあるディレクトリ -> ndir -> nndirというディレクトリに、Testというclassを作ったとして、このpackageは「ndir.nndir」としています。
このディレクトリに移動して、
1.jar cvf Test.jar *.class
2.jar xvf Test.jarとして、
3.MANIFEST-MFに「Main-Class: Test」もしくは
   「Main-Class: ndir/nndir/Test」と書いて、
4.jar cvfm Test.jar META-INF\MANIFEST.MF *.class
5.java -jar Test.jar Test もしくは
     java -jar Test.jar ndir.nndir.Test
と実行してみると、「mainclassが見つからない」エラーになります。
packageが指定されている場合のjarの作り方を教えていただけないでしょうか。

16

回答

2626

閲覧

16件の回答

評価

0

>このディレクトリに移動して
の「このディレクトリ」はどこですか?

Pathを通してあるディレクトリ -> ndir -> nndir
だったら駄目だと思う。
パッケージのルートとなるディレクトリで圧縮しましょう。

jar tvf Test.jar の結果とTestクラスのパッケージ宣言を書き込んでくれればより正確に判断できそう。

評価

0

2でディレクトリが復元されなければ、そのパッケージ構造がなくなってしまうのですから、クラスを認識できないのは当然ですよね。
1の時点で、パッケージのディレクトリごと格納する必要があります。

評価

0

ゆきおさん、mioさん、ありがとうございます。

 1.このディレクトリは、「nndir」でした。
 2.要するに「Pathを通してあるディレクトリ」で作る。

ということを理解しました。
*.classではなく、ということですと、

 jar cvf Test.jar ndir.nndir もしくは
 jar cvf Test.jar ndir/nndir

ということで良いでしょうか?
実際のディレクトリ名とか、class数が結構ありますので、とりあえずdosプロンプトの記述等は一旦スキップしています。悪しからずご了承ください。

評価

0

Pathを通してあるディレクトリで、
jar cvf Test.jar ndir/nndir
でできたのですが、mainのclassでは他のパッケージを使っているので、それも一緒にjarにしないと駄目なようでした。
jar cvf Test.jar ndir/nndir, other dir
という感じで良いでしょうか?

評価

0

まぁ やってみてから書いてよ。

あと実際使ってるjarをみてみると参考になるんじゃないなか。
例えばeclipsでant使ってる人多いだろうから
(使って無くてもインスト済みの人おおいだろう)
(eclipseのディレクトリ)\plugins\org.apache.ant_1.X.X\lib\ant.jar
を適当なローカルフォルダにコピーして解凍してみるとかね。

評価

0

書いてる間に更に書込みあったようなので追記

一緒に使ってるclassも当然一緒にjar化しなくちゃ駄目でしょうね。
(実行時にjar 単体で使いたいなら)

評価

0

ゆきおさん、仰るとおりです。失礼しました。
他のパッケージ等は、ブランクでつないでいったらできました。
IDEは使えない方なので(ともかくProjectというのが駄目なので)、Eclipseは入れていません。
ANTというbuild-toolは知ってはいるのですが、コボラー上がりには荷が重くて。とてもそこまで行き着けません。
色々ありがとうございました。

評価

0

jarはtarというコマンドを模して作られているので、tarコマンドの解説をいろいろ見て回っても良いかもしれません。

評価

0

mioさん、いつもありがとうございます。
Antの本も立ち読みしたことがあります。
Buildは、ともかくそれがないと駄目というか効率が悪すぎるのだろうと思うのですが、「ともかくJavaはxmlだらけやな〜」と思って、読みつなぐ前に気力が萎えるというのが正直なところです。
なにしろ、初めて「jarの作成に成功した」という段階なので、少し頭を冷やしてから志向してみます。

評価

0

>Javaはxmlだらけ
同意。いくつかは確実にYAMLとかJSONのほうがいい。

評価

0

mioさん、申し訳ない。tarのところは頭に入ってないままでした。
因みに、ここはUnix育ちの方ばかりですか?

評価

0

>Javaはxmlだらけ
「これからはXMLだ」という標準に対するスタンスなんでしょうが、たしかに煩わしいと感じるところもありますね。

antの話は私からではないですよ。

>因みに、ここはUnix育ちの方ばかりですか?
私はMS-DOS(というかCP/M)やNEC-DOS育ちです。

評価

0

mioさん、Antの話は確かに。ごちゃごちゃです。
申し訳ない。
MS-DOSというと「BASIC」とかいうあたりからでしょうか?そんな訳ないな。きっと「VC++」とかそういうあたりでしょうか。
C系の言語野の方だと、「Javaは何て楽なんだ」という感じですか。うらやましいです。

評価

0

「そんな訳ないな」と言われてしまいましたが、最初に触った言語はBASICです。その後アセンブラを経由してC、C++。
最初のVC++がいつか知りませんが、当時は存在すら知りませんでした(Windowsの1.0は出ていたようです。後から知りましたが)。
MS-C、Turbo-C、LSI-C、XC、GNU-C等々いろいろあったのです。

Javaが楽かどうかはケースバイケースでしょう。
例えばソケット系ならそう思いますが…。

評価

0

mioさん、長くなるのでこれでクローズですが、BASICってかのビルゲイツさん作のやつでしたか?
昔、よくみていた「頑張れゲイツ君」などでさんざんからかわれていましたが、C系の言語野の人は、かの人には恨み骨髄という人が多いようです。
mioさんは、今はMicrosoft系にタッチすることはない、ということですかね。
色々、ありがとうございました。

評価

0

BASICは別の人の作で、PC用に仕立てたのがゲイツとポール・アレン。これは検索すればすぐに分かることでしょう。
Cの人がゲイツを恨む?笑いものにする、ならまだ分かりますが…。

「Microsoft系にタッチすることはない」って、何を根拠に…。
IEのコーディングは必然的にJScript(MS製)ですし、ExcelやWordのマクロ(VBA)も必要です。プライベートならたまにVC++、VB、C#を書いています。
MSやゲイツ氏が嫌いなんてこともないのですが。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。