dポイントプレゼントキャンペーン実施中!

今、プログラミングの練習をしています。言語はjavaです。独学なので、立ち止まったら対処ができません。一応、本の通りにやっているつもりなのですが…
本を書き写した所、コンパイル(コンパイラ?、インタープリタ?)が出来ません。
お分かりの方がいらっしゃいましたら、是非ご教授下さい。お願いします。

class Test{
int i = 10;
int j = i * 2;

int sum(int m){
return j + m;
}
int sum3(int m,int n){
int k = sum(3);
return m + n + k;
}
}

public class sample31{
public static void main(String[] args) {
Test t = new Test();
System.out.println("tオブジェクトのメソッド" +
"sum3(1,5)の結果:" + t.sum3(1,5));

}
}

ちなみにエラーの文は、
C:\Source>java sample31
Exception in thread "main" java.lang.NoSuchMethodError: Test.sum3(II)I
at sample31.main(sample31.java:17)
という風に出ています。(意味は分かりませんが…)

A 回答 (5件)

提示されているプログラムをそのままコピーして、


コンパイルして、実行しましたが、
>tオブジェクトのメソッドsum3(1,5)の結果:29
とちゃんと実行できましたよ。
    • good
    • 0

以下のサイトの(reply 9 of 9)にもある通り、classpathの方ではなくて、pathの設定であるように思います。



http://forum.java.sun.com/thread.jspa?threadID=5 …

以下のサイトを参考に、もう一度確認をしてみてください。(セミコロンで正確に区切られているのかとか、半角スペースが余分に入っていないのかどうか、など。)

http://tyche.pu-toyama.ac.jp/~ko-ji/java-in/
http://www.wikiroom.com/java/?path,classpath
    • good
    • 0

ごめんなさい、早とちりしました。


 java.lang.NoSuchMethodError
だったんですね。
 Test.sum3(II)I
がない、と言ってきてますが、ためしに上記プログラムをコンパイル
して、実行しましたが、問題なく実行できました。

 C:\java>javac sample31.java
 C:\java>java -classpath . sample31
 tオブジェクトのメソッドsum3(1,5)の結果:29

同一のファイル内に全てのクラスが書かれていますので、
不整合がおきることも考えにくいですが、どこかで、
別のTestクラスを読み込んでしまっているのでしょうか?
    • good
    • 0

変ですね。


JDK1.5 ですが、問題なくコンパイル&実行できました。
質問文で書かれているプログラムを
sample31.java で保存して
javac sample31.java でコンパイル
java sample31 で実行しているのですよね?
    • good
    • 0

コンパイルは通っているようですので、CLASSPATH の設定ではないでしょうか。


ためしに、

 java -classpath . sample31

と打ってみるとどうなるでしょう。
(classpathの後のピリオドは、コマンドを打ち込んだ、現在いる場所という意味です)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!