- ベストアンサー
Java
昨日から「やさしいJava」という本をつかって勉強を始めた者です。 最初からなにか上手くいかないので、アドバイスいただけたら嬉しいです。 public class Welcome{ public static void main(String[] args){ System.out.println("Welcome to Java!"); System.out.println("Javaの世界へようこそ!"); } } というソースを作りました。 これを javac Welcome.java とやって、そこまではよさそうなのですが、そのあと、 java Welcome をやったらエラーになります。 ソースも間違いないと思うのですが、よくわかりません。 ファイルの仕方に問題があるのかなとも思っています。 どうか、よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>でもどうしてそのように入力したら上手くいくのでしょうか? >良ければ教えていただけないでしょうか? あなたがWindows環境下ならコマンドプロンプト上で set classpath と打ってみてください。その結果、あなたの環境下での「クラスパス」というものがわかります。「クラスパス」というのは「クラスを検索するための候補のパス」です。上記のコマンドをうつと classpath=~ という結果が返ってくると思いますが、その「~」の部分しかクラスを検索しに行きません。つまり、Welcome.classのあるフォルダがそこに設定されていればWelcomeの存在がわかるんですが、設定されていない場合は検索しないので存在がわからないんです。というわけで、実行できません。 UNIX環境下の話はよく知らないのですが、Welcome.javaに System.out.println("classpath="+System.getProperty("java.class.path")); を加えて実行してもらえれば同じようにclasspathがわかるはずです。 で、 java -cp .; Welcome というのは「-cp .;」の部分で、「カレントディレクトリをクラスパスにしなさい」と言っています。つまり、Welcome.classが存在するフォルダを検索しなさいと言っているので、無事Welcomeクラスが見つかって実行できるわけです。 多分、カレントディレクトリをいちいち指定するのは面倒だと思うので、Windowsだったら環境変数の設定でclasspathの「~」の先頭に「.;」を付け加えて「.;~」にしてください。すると java Welcome だけで実行できるようになるはずです。(cdでディレクトリを移動していたらですが) System.out.println("classpath="+System.getProperty("java.class.path")); を加えたWelcome.javaを作って 1) 現状のままjava -cp .; Welcomeで実行した場合 2) 環境変数に「.;」を付け加えてjava Welcomeで実行した場合 3) 環境変数に「.;」を付け加えてjava -cp .; Welcomeで実行した場合 の「classpath=~」の部分を見てもらえれば理解が深まると思います。
その他の回答 (2)
- Chronos198
- ベストアンサー率30% (105/349)
「エラーになる」とは、どんなエラーですか?
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 まず、エラー関連に関する質問の場合はエラー内容を明記してください。 (何のエラーかわからないと回答出来ない) ただ、コンパイルは通っているのでクラスパスの設定が出来てないのだと思います。 java -cp .; Welcome と打ってみてください。 コンパイルにエラーが無ければ、文法的には問題ないということになります。 文法的にはというのは、実行してみたら不正なデータを扱っていた等あると エラーになります。
お礼
すみません、もう一度ソースを打ち直してから java -cp .; Welcome をやってみたらきちんと Welcome to Java! Javaの世界へようこそ! とでました! ありがとうございました^^! でもどうしてそのように入力したら上手くいくのでしょうか? 良ければ教えていただけないでしょうか?
補足
Exception in thread"main"java.lang.NoClassDefFoundError:Welcome と書いてありました。 java-cp.;Welcome もやってみましたが、 'java-cp.;Welcome'は内部コマンドまたは外部コマンド、操作可能なプログラムバッチファイル として認識されていません。 と出ました。 よろしくお願いします!
お礼
返信ありがとうございます! 丁寧に教えていただいたおかげでようやく意味がわかってきました。 そしてうまく実行もできるようになりました! ありがとうございました!