- ベストアンサー
自作のクラスファイルがインポート出来ない
ご質問させて頂きます。 自作のクラスファイルがインポート出来ないので困っています。 自作のクラスファイルがある場所 c:\ja クラスファイル名 TestMap.class juko.javaにこのようにインポートして、 import TestMap.*; 以下のようにインポートをしようとすると、 C:\ja>javac -d c:\ja juko.java 以下のようなエラーになってしまいます。 ----------------- jukou.java:7: パッケージ TestMap は存在しません。 import TestMap.*; ----------------- なお、環境設定も以下のように変更してみましたが駄目でした。 CLASSPATH=C:\ja;.;C:\j2sdk1.4.1_02\lib\tools.jar;C:\Program Files\Allaire\JRun\l ib\ext\servlet.jar;C:\mysql-connector-java-3.1.0\mysql-connector-java-3.1.0-alph a-bin.jar; ご教授して頂けたら幸いです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
おお そこまでいったってことはimportについては解決したようですね。 TestMap("B") ; は参照になっていません。 クラス名("B")はコンストラクタにStringの"B"を渡しているということになっているからです。 試しにTestMapクラスに public String getStr(){ return "呼ばれてますよ!" } を追加してみてください。 これで"呼ばれてますよ!"がとれれば大丈夫!!
その他の回答 (4)
- chi-kon
- ベストアンサー率43% (58/132)
ちなみに最初のimportがどうのこうのという問題はimportについて正しく理解していないからだと思います。 importはそのクラス(この場合はTestMapクラス)を使うクラスがTestMapをつかうときにpackage名.TestMapでアクセスしなくてはいけないところをTestMapだけでアクセスするためにつかうのです。 こんな書き方をすると他の方から苦情がきそうですが。。。 とりあえずはそんな認識で大丈夫だと思います。 今回はTestMapにpackage宣言がついていないということなのでimportする必要がないということです。 正確には"パッケージ宣言しない"パッケージに属しているということなのですが。。。
- okure_donchan
- ベストアンサー率54% (25/46)
TestMap.javaとjuko.javaが同パッケージ内にあるならば import文は必要ありません。 気になるようでしたらパッケージソースを全てコンパイルしてみてはどうですか。 javac -d C:\ja *.java
お礼
ご返事有り難うございました。
- chi-kon
- ベストアンサー率43% (58/132)
c:\ja にクラスパスが通っていて c:\ja\TestMap.class となっているのであれば、importはいらないのでは?
補足
ご返事有り難うございました。 >となっているのであれば、importはいらないのでは? ということは、自作のクラスファイルを参照する方に問題があるということなんですか? >TestMap("B") ; と、参照すると、 >C:\ja>javac juko.java >juko.java:85: シンボルを解決できません。 >シンボル: メソッド TestMap (java.lang.String) >場所 : juko の クラス > TestMap("B") ; というエラーが表示されてしまいます。 ちなみに、TestMap.javaは以下のような感じです。 ----------------- import java.io.*; import java.util.*; public class TestMap { /*HashMap生成(クラス変数)*/ class MyData{ public String sDate; public String sName; } private static HashMap hashMap = new HashMap(); /*追加:入力キー(クラス変数)*/ public static String inputKey = null; private String[] keys = {}; public static void main(String args[]){ try{ TestMap testMap = new TestMap(); testMap.setMap("test.csv"); ・ ・ ・ ----------------- お忙しいところご面倒と思いますが ご教授して頂けたら幸いです。
- liar_adan
- ベストアンサー率48% (730/1515)
(1) import TestMap.*; を import TestMap; としたらできないでしょうか? (2) 呼び出している側にpackege文があって、 呼び出されている側にはpackege文は存在しないということはないでしょうか? 最近、そういうことが禁止になりました。 (3) どちらもpackage文を使っておらず、 同じディレクトリに存在するならば、 上記import文を削除すればできるかもしれません。
補足
ご返事有り難うございました。 早速ですが、 (1)は、 C:\ja>javac -d c:\ja juko.java juko.java:7: '.' がありません。 import TestMap; ^ と、なってしまいます。 (2)は、TestMap.javaにはpackege文は使用していません。 (3)は、 C:\ja>javac -d c:\ja jukou.java jukou.java:7: 'class' または 'interface' がありません。 TestMap.*; ^ と、なってしまいます。 お忙しいところご面倒かとは思いますが ご教授して頂けたら幸いです。
お礼
ご返事有り難うございました。 お陰様で解決しそうです。