- ベストアンサー
重複エラーを解決する方法
- 重複エラーが発生し、エラーメッセージによるとCanvasクラスの定義が重複しているとのことです。
- 現在コンパイルしているファイルで、Canvas.javaと○.javaでの定義が重複しているのかを確認しましたが、二つのファイルが現在コンパイルしているファイル自身でした。
- このエラーが出るようになる前に行った作業で、一度Canvas.javaを削除して再び作成し直したことが原因で、どこかにbackupfileが作成されてしまった可能性があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
package文というのは、クラスのパッケージ名を定義するもので、 記述する場合は、必ずプログラムの先頭に記述しなければなりません。 (コメントは除く) 例えばTextFieldクラスは、正式には java.awt.TextField というクラス名ですが、このソースファイルの先頭には package java.awt; という文が記述されているはずです。 ついでに言っておきますと、当初の推測では、 1.Canvas.javaではpackage文を記述していない。 2.○.javaでもpackage文を記述していない。 3.○.javaで「import java.awt.*;」の記述がある。 4.○.javaでCanvasクラスを使っている(Canvas cv = new Canvas()のように) だと思いました。推測があっているなら、次のような理由でエラーになります。 import文をjava.awt.*のように記述すると、コード内で出現したクラスは、 そのパッケージ名が省略されたものと判断されます。 従って、「Canvas cv = new Canvas()」の記述は、 (パッケージ無し)Canvas cv = new (パッケージ無し)Canvas() と java.awt.Canvas cv = new java.awt.Canvas() のどちらとも取れるため、「どっちなのかはっきりしろ」というメッセージが 出るはずです。
その他の回答 (1)
- ngsvx
- ベストアンサー率49% (157/315)
推測で申し訳ないのですが、 ご質問のエラーメッセージはクラスを特定出来ないために 出ているのだと思います。 具体的には、Canvasというクラスが出現したときに、 自作のクラスだと思われるCanvas.javaと、java.awt.Canvas のどちらかわからないのだと思います。 はっきりさせるには、 1.正確なエラーメッセージ(ファイル名、行番号は必須) 2.Canvas.javaのpackage文 3.エラーがでたファイルの、package文及び、全てのimport文 を教えてください。
お礼
推測でも,十分今後の参考にもなり,勉強になりました。 実は… 数分前に,Canvas.javaのプログラムを操作した後, コンパイルしてみた所,なぜかエラーが消えたのです。 (何の関係もなさそうな部分っだったのですが。) 大変感謝しております。ありがとうございました。 今後もよろしくお願いします。 ところで,package文とは,どのような文を指すの でしょうか?javaファイルのどの部分に書いてある ものなのでしょうか?まだ勉強をし始めたばかりで すみません。教えて下さい。
お礼
度々、ありがとうございます。 JBuilderを使っている為か… package文に相当しそうな文では、「package keisan;」 としか記述していません。次の行に続くのは、import文で す。 1番と2番については、前述のような現状です。 3番に書いて頂いたことは、まさに当てはまって いました。 4番目のことは、該当していませんでした。 このように回答頂き、大変勉強になります。 ありがとうございました。