質問: Console.Read(); } } ``` ``` // MainProg.java class MainProg{ public static void main(String args[]){ Console.Write( "Hello" ); } } ``` と記述し、それぞれjavac でコンパイル。 その後、Console.class を (他のクラスも追加する予定で。) default.jar というjarファイルに固めます。 で、 コマンドプロンプトから $java MainProg -classpath default.jar と打って起動しようとすると Exception in thread "main" java.lang.NoClassDefFoundError: Console at MainProg.main(MainProg.java:6) Caused by: java.lang.ClassNotFoundException: Console 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) ... 1 more とエラーメッセージが出て起動しません。 メッセージから推測して、Consoleというクラスにアクセス出来ていないことが原因なようなのですが、 どうすればいいのでしょうか。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ コンパイル&jarファイルに固めるときに打ったコマンド: $javac Console.java $jar -cf default.jar Console.class $javac MainProg.java ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 起動時: $java MainProg -classpath default.jar ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 私がやりたいこと&知りたいことは、 1. 必要最低限のクラス を 一つのjarファイルに固めたり、外部ライブラリ ( POI 等 ) を使用する方法 2. mainメソッドのあるクラスファイルを jarファイルにして、必要最低限のクラスも別のjarファイルとして固め、ダブルクリックで起動できるようにする方法 です。 自分でも検索かけてみたのですが、調べ方が悪いのか、 eclipse で作る方法等のように、私が知りたいことからは外れているのが多かったので、 質問しました。 [環境等] 言語 : Java コンパイラ: javac 宜しくお願い致します。
回答: Tools Reference - java java [options] classname [args] classname の前に設定しないと、mainのコマンドライン引数として使われてしまうぞ --追記-- ドキュメントよく読んだら -Xbootclasspath のオプションを使わないといけないっぽいです。(?) --追記2-- 実行可能Jarファイルの作り方については、 ひしだま's 技術メモページ - jarファイル このページが参考になると思います。(丸投げ)