- ベストアンサー
javaがへん2
2) problem.javaとtest2.javaが同じディレクトリにあるとします。 problem.javaは以下のないようです public class problem { String[] hoge; private String prob; public problem() { super(); prob = new String("new"); hoge = new String[N]; hoge[0] = "大人4人と子供2人の料金は560円です。大人3人と子供3人" + "の料金は540円です. では大人(X)と子供(Y)の料金は" + "それぞれいくらですか. XとYを用いて方程式を立てなさい"; hoge[1] = "大人5人と子供2人の料金は600円です。大人3人と子供1人の料金は350" + "円です. では大人(X)と子供(Y)の料金はそれぞれいくらですか. XとYを用いて" + "方程式を立てなさい"; } String get_prob(int n){ prob = hoge[n]; return prob; } } test2.javaが以下のないようです class test2{ public static void main(String args[]){ problem pr = new problem(); System.outprintln(pr.get_prob(0)); } } コンパイルすると以下のエラーがでます。 test2.java:3: シンボルを見つけられません。 シンボル: クラス problem 場所 : test2 の クラス problem pr = new problem(); ^ test2.java:3: シンボルを見つけられません。 シンボル: クラス problem 場所 : test2 の クラス problem pr = new problem(); ^ エラー 2 個 ふたつのファイルは同じディレクトリにあります。コンパイルがとおらないのもjavaの不調なのかな?と思ってしまいますが原因が分かりません。誰か助けてください。ちなみに、違うパソコンでtest2.javaとproblem.javaをコンパイルして実行は可能です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
CLASSPATHの問題のように思います。 CLASSPATHをひとつも定義していない状態であれば自動的にカレントディレクトリ(実行してるディレクトリ)を検索します。 しかし。CLASSPATHをひとつでも定義すると実行時(コンパイル時)に必要なクラスをCLASSPATHに設定されている場所しか探さなくなり、メインが見つからないやシンボルが見つからない等のエラーが起きます。 CLASSPATHの内容を確認してください。 CLASSPATHが定義されているようであれば、カレントディレクトリ「.」が入っているか確認しましょう。 入っていなければ「.」を追加しましょう。 例)「もともと入ってるクラスパス;.」 「;」は複数のパスを指定する際の区切り文字です。 http://oshiete1.goo.ne.jp/qa2556912.htmlの質問も同じ原因だと思います。
その他の回答 (3)
- yuyanan
- ベストアンサー率15% (2/13)
まだANo.1です。 補足がある。「set CLASSPATH=絶対PATH(例:D:\j2sdk1.5.0_06\bin)」に設定する絶対PATHはXXX.classがあるPATHです。 例えば:D:\sotu3にtest2.javaとproblem.javaがあります。コンパイルしたtest2.classとproblem.classもこのディレクトリにあります。 このコマンドは「set CLASSPATH=D:\sotu3」になります。 もっといい方法は: マイ パソコン -> 右鍵 -> プロパティ -> 詳細設定 -> 環境変数 -> 変数CLASSPATHにそのディレクトリを追加する(変数CLASSPATHがなかったら、新規してください。)
- yuyanan
- ベストアンサー率15% (2/13)
ANo.1です。 すみません、テストしないで回答しました。 たった今私のパソコンでテストをして、本当に原因を見ました。 CLASSPATHの問題です。 コマンドプロンプトでやる前に、「set CLASSPATH=絶対PATH(例:D:\j2sdk1.5.0_06\bin)」をrunする。コンパイルが通れると思います。 PS:日本語が下手ですから、そんなたくさんの文がたぶん分かりません。 ^^;)
- yuyanan
- ベストアンサー率15% (2/13)
この二つファイルは同じdirectoryにある場合、ファイルの中でpackageの声明は必要です。 二つファイルともtopに「package フォルダ名」を追加します。 それでtest2.javaの中でproblemクラスを使用することがでると思います。
お礼
パッケージ宣言をつけなくても僕のパソコンではコマンドプロンプト上でもエクリプス上でも問題なくコンパイル実行ができます。 友人のものはだめです。こんなことがあるのでしょうか? あれ?いま僕のパソコン上にパッケージ名 package sotu3; (sotu3のディレクトリにあります) をtest2.javaとproblem.javaに付け加えました。すると 今度は僕の方に同じエラーがでてきました。不思議です。 あとすいませんtest2.javaとproblem.javaはこぴぺするときにみすってまいした。いかが正しいです problem.java public class problem { String[] hoge; int N=2; private String prob; public problem() { super(); prob = new String("new"); hoge = new String[N]; hoge[0] = "大人4人と子供2人の料金は560円です。大人3人と子供3人" + "の料金は540円です. では大人(X)と子供(Y)の料金は" + "それぞれいくらですか. XとYを用いて方程式を立てなさい"; hoge[1] = "大人5人と子供2人の料金は600円です。大人3人と子供1人の料金は350" + "円です. では大人(X)と子供(Y)の料金はそれぞれいくらですか. XとYを用いて" + "方程式を立てなさい"; } String get_prob(int n){ prob = hoge[n]; return prob; } } test2.java class test2{ public static void main(String args[]){ problem pr = new problem(); System.out.println(pr.get_prob(0)); } }
補足
あれ?そうでしたっけ?そうですか?うそ~ 前にはそんなことしなくても大丈夫でしたよ。 僕はeclipseで作って、それを友人のパソコンでコマンドプロンプトでやったらこういうエラーがでてコンパイルが通らないってことになりました。 で、僕の方もコマンドプロンプトでやったら特にコンパイルエラーがでないんです。そもそもpackageガ必要ならeclipseのほうも必要と警告とかをだすんじゃないでしょうか?
補足
本当だ!!!直った直ったよ!!! まじで感動したぜ!!これからはエクリプスでやっていこうとしていたがコマンドプロンプトでもできるようになたぜ!! すげーーーよすげーーよお~~心の友よ!!! お礼に俺の歌を二人にプレゼントだ お~れ~はジャイアン!!が~~き大将!!! 天下む~~てき~~のお~~とこだぜ~~~ ありがとう!!!!!!!!!!