• ベストアンサー

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 をやったらエラーになります。 ソースも間違いないと思うのですが、よくわかりません。 ファイルの仕方に問題があるのかなとも思っています。 どうか、よろしくお願い致します。

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

  • ベストアンサー
回答No.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=~」の部分を見てもらえれば理解が深まると思います。

yukynamy
質問者

お礼

返信ありがとうございます! 丁寧に教えていただいたおかげでようやく意味がわかってきました。 そしてうまく実行もできるようになりました! ありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

「エラーになる」とは、どんなエラーですか?

全文を見る
すると、全ての回答が全文表示されます。
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 まず、エラー関連に関する質問の場合はエラー内容を明記してください。 (何のエラーかわからないと回答出来ない) ただ、コンパイルは通っているのでクラスパスの設定が出来てないのだと思います。 java -cp .; Welcome と打ってみてください。 コンパイルにエラーが無ければ、文法的には問題ないということになります。 文法的にはというのは、実行してみたら不正なデータを扱っていた等あると エラーになります。

yukynamy
質問者

お礼

すみません、もう一度ソースを打ち直してから java -cp .; Welcome をやってみたらきちんと Welcome to Java! Javaの世界へようこそ! とでました! ありがとうございました^^! でもどうしてそのように入力したら上手くいくのでしょうか? 良ければ教えていただけないでしょうか?

yukynamy
質問者

補足

Exception in thread"main"java.lang.NoClassDefFoundError:Welcome と書いてありました。 java-cp.;Welcome もやってみましたが、 'java-cp.;Welcome'は内部コマンドまたは外部コマンド、操作可能なプログラムバッチファイル として認識されていません。 と出ました。 よろしくお願いします!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • JAVA コンパイル出来ません。

    いつも大変お世話になり、誠にありがとうございます。 標記の件。 public class Main { public static void main(String[] args) { system.out.println(187194-174220); } } C:\>javac Main.java 'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 なぜでしょうか? ご多忙中恐れ入ります。 ご回答のほど、宜しくお願い申し上げます。

    • ベストアンサー
    • Java
  • Javaについて教えてください。

    Javaのソースコードで以下のコードを実行すると表示されないのですがなぜでしょうか? public class Sample{ public static void main(String[] args){ for (int i = 0 ; i >= 5; i++){ System.out.println(i); } } }

  • Java Compilerクラスについて

    import java.lang.Compiler; //http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/Compiler.html class Compile{ public static void main(String[] args) throws ClassNotFoundException{ Compiler com = null; System.out.println( com.compileClass("testCompile"); } } class testCompile{ public static void main(String args[]){ System.out.println("O========K========!!!"); } } Compilerクラスの使用方法がいまいちわかりません。 上記のクラスの間違いを指摘していただきたいです。

    • ベストアンサー
    • Java
  • Javaについて教えてください!

    sampleパッケージに属するMain.javaとSub.javaがあり、Main.javaのmainはSub.javaのsubメソッドを呼び出して「OK」と表示させるプログラムを教えてください! //Main.java package sample; public class Main{ public static void main(String[] args){ Sub.sub(); }} //Sub.java package sample; public class Sub{ static String str = "OK"; public static void sub(){ System.out.println(str); }} String型の変数strはクラス変数で行いたいのですが、どこを改善すれば良いでしょうか?

    • ベストアンサー
    • Java
  • javaプログラミング この文章正確ですか?

    先ほど質問させていただきましたがもう一回質問させていただきます。 class Hello{ public static void main(String[] args) { System.out.println("まいど!”) ; javaの参考書で勉強しています。 これをコンパイルしろということなんですがコマンドプロンプトが読み取ってくれません。間違いがあったら教えてください!

    • ベストアンサー
    • Java
  • java 入力命令

    以下うまくどうさしません、教えてください。 public class Main { public static void main(String[] args){ System.out.println("名前"); String name = new java.util.Scanner(System.in) .nextLine(); System.out.println("年齢"); int age = new java.util.Scanner(System.in) .nextInt(); System.out.println (age + name); } }

  • JAVAコンストラクタについて

    JAVA のコンストラクタ定義の際に、下記のようにコンストラクタにvoidを付けた時と付けない時の処理結果が変わるのはなぜでしょうか。 (1) class O { protected int d; O(){ System.out.println("O = " + d); } } class Study_6_3main_void { public static void main(String args[]) { int i = 1; O OO = new O(); System.out.println("O = "); } } (2) class O { protected int d; void O(){ System.out.println("O = " + d); } } class Study_6_3main_void { public static void main(String args[]) { int i = 1; O OO = new O(); System.out.println("O = "); } } 実行結果 (1) O = 0 O = (2) O = 以上です。回答の程よろしくおねがいします。

    • ベストアンサー
    • Java
  • javaの問題わからなくって質問します

    内容はEclipse上でプロジェクトフォルダを作りひとつは別のjavaファイルを動かすのともう一つはそのお同じフォルダから動かされるjavaプログラムです。 説明不足というかまだ触れてそんなにたってないのでソースを載せます class SampleManager { public static void main(String[] args){ exec obj= new exec(samlple1.java); obj.say(); } } class exec{ String phrase; exec(String phrase){ this.phrase=sample2.java; } void say(){ System.out.println(phrase); } } /////// public class samlple1 { public static String java; public static void exec(String[] args) {//execをした理由はSampleManagerにあるクラスexecを呼び出れるため System.out.println("Hello,World!")//この二つの出力結果を表示したい; System.out.println("こんにちは!"); } } ひとつのフォルダに上記のソースいれてSampleManager.java からsample.javaの出力結果の HelloWorld! こんにちは! を出力したいですがエラーはなく例外処理もありませんけど何故か出力結果はnullが返ってしまいます なぜでしょうか? アドバイスをお願いします

  • macでjavaをはじめたいのですが・・・

    macOSXにははじめからjavaが使える環境があると 聞いたので早速簡単な下記のソースを書いてコンパイル してみたのですが、 java:1: class または interface がありません。や java:16: <idenfifier>がありません、や java:16:'{'がありません。や java:16:型の開始が不正です。 など27個ものエラーが発生してしまいます。 どうすればコンパイルできるのでしょうか? どなたか助けてください!おねがいします。 ちなみにjavaのversionは1.4.2_09です。 public class Myfirst{ public static void main(String args[]){ System.out.println("はやくmacでjavaを使いたい・・"); } }

    • ベストアンサー
    • Java
  • javaが実行できなくて困ってます。

    javaを始めたばかりの者です。 いきなりですが、 class AppliPM1{ public static void main(String args[]){ System.out.println("Javaパーフェクトマスター"); } } このソースをコマンドプロンプトでjavacにとおすとエラーなくうまく通り、同じくコマンドプロンプトでdirとうつと、 444 AppliPM1.class 130 AppliPM1.java と表示されたので実行しようと思い java AppliPM1 とコマンドプロンプトでうつと Exception in thread"main"java.lang.NoClassDefFoundError: AppliPM1 と表示され実行できません・・・。 教科書のプログラムを何回も確認しましたが絶対に写し間違いもしてないはずなのですが一体実行できない原因は何なのでしょうか!?詳しい方、アドバイスお願い致します!!

    • ベストアンサー
    • Java
このQ&Aのポイント
  • Windows10のパソコンでMFC-J805Dのドライバーが入っていないというエラーが表示されています。
  • 有線LAN接続での問題かどうか、関連するソフトやアプリについての情報がわかりません。
  • 電話回線の種類については質問文中に記載がありません。
回答を見る

専門家に質問してみよう