• ベストアンサー

実行画面で表示されるエラーのことなんですが

java.lang.NoSuchMethodError: main Exception in thread "main" と表示されます。どうすればよいでしょうか?自分としてはテキスト ファイルの読み込みあたりがおかしいのかなと思うのですが、このエラーをぐぐったら指定したクラスの中にmainメソッドが含まれていないと 書いてあってよくわからないです。

  • Java
  • 回答数5
  • ありがとう数2

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

  • ベストアンサー
  • kscKane
  • ベストアンサー率62% (18/29)
回答No.5

私の環境では実行できました。 実行コマンドはどう打っていますか? >java ServerMain と実行されていますでしょうか? あと、パッケージなどは利用されていますか?

falcao
質問者

お礼

今まで >java Server とやっていましたが、ご指摘の通りにやったところできました。 ありがとうございました。

その他の回答 (4)

  • watuki
  • ベストアンサー率75% (3/4)
回答No.4

例外から察するにmain.javaというファイル名でしょうか。 main.java --- public class main {   public static void main(String[] args){ // ※     System.out.println("Hello world!");   } } 質問にあるエラーは↑みたいに書かれているはずが、 ※の行がないために出ているエラーです。 ※の行のメソッドを定義してあげれば動くと思われます。 (インデントを全角空白でやってるので、コピペする際には気をつけて下さい)

回答No.3

・タイプミスはありませんか? ・クラスパス上に「mainメソッドのない」同名のクラスあり、クラスパスにそっちが先に記述されていたりしませんか?

  • kscKane
  • ベストアンサー率62% (18/29)
回答No.2

実行しようとしているクラスに対して、クラスパスが通っていない場合、 また、mainメソッドの書き方が間違っている場合が考えられます。 クラスパスの設定をしているなら、それを確認してください。 正しいと思われる/設定していないなら、ソースをご提示いただけるとなんだか原因が分かるかもしれません。

falcao
質問者

補足

ご回答ありがとうございます。 なにしろ、javaやったことないのにいきなり卒論でクラサバのプログラム作れといわれたもので(汗) プログラムのせるのでよろしくお願いします。 class Server extends Thread{ private Socket client; private String ans; private int ans2; private String str; private int str2; private int number; private int ritu; private String name; public Server(Socket i,int n){ client = i; number = n; } public void run(){ try{ int a,n,t,s; int ritu; int ans2; int amari=0; int rand[]={0,1,2,3,4,5,6,7,8,9}; t=s=n=ritu= 0; ans2=0; Random ran = new Random(); ran.setSeed(System.currentTimeMillis()); for(int wh = 9;wh >1;wh--){ s = ran.nextInt(9); t = rand[wh]; rand[wh] = rand[s]; rand[s] = t; } InputStreamReader fisr = new InputStreamReader(client. getInputStream()); BufferedReader fin = new BufferedReader(fisr); String name = fin.readLine(); System.out.println(name); while(n!=10){ FileInputStream objFis = new FileInputStream("eitango"+rand[n]+".txt"); InputStreamReader objlsr = new InputStreamReader(objFis,"Shift_jis"); BufferedReader objBr = new BufferedReader(objlsr); PrintWriter out = new PrintWriter(client.getOutputStream(),true); //1行ずつファイルを読み込む if (n==0){ out.println("Hello,clientNo:" + number +"\n"); } for(a=0;a!=6;a++){ if(a==5){ String ans = objBr.readLine(); ans2 = ans.length(); System.out.println("ans2 = "+ans2); } if(a!=5){ out.println(objBr.readLine()); } } InputStreamReader isr = new InputStreamReader(client.getInputStream()); BufferedReader in = new BufferedReader(isr); String str = in.readLine(); int str2 = str.length(); System.out.println("str2="+str2); System.out.println("ans2="+ans2); if(str2==ans2){ ritu++; }else{ System.out.println("×"); } System.out.println("正解数:"+ritu); n++; } PrintWriter out2 = new PrintWriter(client.getOutputStream(),true); out2.println("おつかれさまでした\n"); while(amari!=6){ out2.println(""); amari++; } FileOutputStream objF = new FileOutputStream("seiseki.txt",true); OutputStreamWriter objO = new OutputStreamWriter(objF); BufferedWriter objB = new BufferedWriter(objO); objB.newLine(); objB.close(); out2.println("clientNo:"+number+"さんは10問中"); out2.println(ritu); out2.println("問正解です。"); client.close(); }catch (FileNotFoundException e){ e.printStackTrace(); }catch(UnsupportedEncodingException e){ e.printStackTrace(); }catch (IOException e){ System.err.println("エラーが発生しました:" + e); } } } class ServerMain{ public static void main(String[] args){ int n=1; try{ ServerSocket server = new ServerSocket(1000); while (true){ Socket client = server.accept(); System.out.println("accept client No."+ n); new Server(client, n).start(); n++; } }catch(Exception e){ System.out.println("エラーが発生しました:" + e); } } }

回答No.1

おそらく java Hoge として実行していると思います。 java Hoge を実行すると、HogeクラスのmainメソッドがJavaから呼ばれて実行されます。 Hoge.javaの中に public static void main(String[] args) というmainメソッドはありますか? 表示されてるエラーは 「(mainってメソッドを呼んだけど)mainなんてメソッドが見つからないよ。」 って意味です。 参考にしている本や、サイトなどがありましたら、もう1度最初から熟読しましょう。

falcao
質問者

補足

ご回答ありがとうございます。 ですがmainメソッドがあるのにこのエラー文が表示されます。これは何がおかしいのでしょうか?

関連するQ&A

  • Javaの実行できません、教えてください。

    Javaの実行できません、教えてください。 http://members2.jcom.home.ne.jp/take_1118/Applet39.html このページのサンプルプログラムを実行したいですが、どうしても Exception in thread "main" java.lang.NoSuchMethodError:main というエラーが出るため、実行できません。 どうすればできるんでしょうか?教えてください、お願いします。 サンプルプログラムではmainメソッドが含まれていないようですが、そうすれば実行できるんでしょうか?

  • Javaが実行されません。

    javacコマンドは正常に動くのですが、 javaコマンドを使用すると Exception in thread "main" java.lang.NoclassDefFoundError:Sample2 と表示されるんですよ。 どのクラスファイルに対してもそうで、 以前実行できたクラスファイルに対しても そのエラーが出るんです。

    • ベストアンサー
    • Java
  • 実行時に出るエラーの意味が解りません

    Javaで、「SystemFont 」というクラス名をつけて プログラムを組み、コンパイルしてその後実行したところ Exception in thread "main" java.lang. NoClassDefFoundError:SystemFont というエラーが表示されるだけで実行できません。 このエラーの示す意味をどなたか教えて頂けませんか?

    • ベストアンサー
    • Java
  • javaの実行エラーです

    Javaのソースファイルをコンパイルまでしました。Classファイルもできています。 実行すると、下記のエラーです。 Exception in thread "main" java.lang.UnsupportedClassVersionError: Hello (Unsupported major.minor version 50.0) よろしくお願いします。

  • 実行時にエラー

    いつもお世話になっています。またまた躓いてしまったので、よろしくお願いします。 Webサービスのクライアントを作っているところなのですが、実行すると ============================ Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/rpc/ServiceException ============================ というエラーが出てしまいます。 このエラーの意味を教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • このエラーって?

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at DrawPolygon.main(DrawPolygon.java:7) java初心者です。授業についていけず困ってます。どなたかこのエラーの意味を初心者の私にもわかるよーに教えてください。

    • ベストアンサー
    • Java
  • Javaの実行エラーが起きます。

    Javaの実行エラーが起きます。 Exception in thread "main" java.lang.UnsatisfiedLinkError: no nativetimer in java.library.pathの解決方法 現在、大学で研究をしており、その関係でネットからひろったJavaのプログラムを動かそうとしているのですが、実行すると上記のようなエラーにより実行できずに困っています。eclipseを使っています。何か解決方法があれば、教えてください。

    • ベストアンサー
    • Java
  • Java実行でのエラー

    Javaを勉強したいのでインストールしてみたところまでは良かったのですがコンパイルを通した後に実行すると動きません。 CLASSPATH:c:\Java JavaファイルがJavaフォルダの中に入っている状態です。 【手順】 c:\Java>java HelloJava.java ↓コンパイル成功 c:\Java>java HelloJava Exception in thread "main" java.lang.NoClassDefFoundError: HelloJava というエラーが出てJavaを実行できません。 エラーの内容がわかる方はがいらっしゃれば教えて頂きたいです。

    • ベストアンサー
    • Java
  • Java2Dの実行エラー(2)

    作成したJavaのソースをjavacでコンパイルを通し、 そのあとにjavaコマンドで実行を通したところ、 以下のようなエラーメッセージが出力され実行できませんでした。 (作成したクラスファイルは「EdgeDetection.class」です。) ------------------------------------------------- C:\TEMP>java -cp . EdgeDetection Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException at EdgeDetection.main(EdgeDetection.java:31) ------------------------------------------------- このエラーを解消するためにもクラスパスの設定(-classpathオプション)もしましたが、駄目でした。 この現象を解決するには、どのようにしたらよろしいのでしょうか?

    • ベストアンサー
    • Java
  • エラーが消えません

    Exception in thread"main"java.lang.ArrayIndexOutOfBoundsException at PortOpener.main(PortOpener.java:106) って何なんでしょう? プログラムのエラーがいつもわけがわかりません。 どこかにそういうのが載っているところを知っている人教えてください.

    • ベストアンサー
    • Java

専門家に質問してみよう