- 締切済み
java import文のエラー
javaのソースで、パッケージをimportして使用するための簡単なサンプルを作成しました。 import文でクラス名まで指定すれば問題ないのですが、*を利用するとコンパイルエラーとなってしまいます。 コンパイル時にクラスパスを指定するのかと思って試してみましたが、やはりエラーでした。 回避方法をご存知の方いらっしゃいましたら、教えていただけますでしょうか。 なお、java/javacは、1.5.0_14を使用しています。 ■ソースコード(1) <C:\Work\Test\PackTest.java> package Test; public class PackTest{ public static void methodA(){ System.out.println("パッケージ成功"); } } ■ソースコード(2) <C:\Work\UsePack.java> import Test.*; //import Test.PackTest; なら成功 class UsePack{ public static void main(String args[]){ PackTest.methodA(); } } ■エラー例(1) >javac -d . PackTest.java (これは成功) >javac UsePack.java UsePack.java:5: PackTest にアクセスできません。 クラスファイル .\PackTest.java は不正です。 ファイルにクラス PackTest が含まれていません。 削除するか、クラスパスの正しいサブディレクトリにあるかを確認してください。 PackTest.methodA(); ■エラー例(2) >javac -d . PackTest.java (これは成功) >javac -classpath C:\Work\Test UsePack.java UsePack.java:1: パッケージ Test は存在しません。 import Test.*; ^ UsePack.java:5: PackTest にアクセスできません。 クラスファイル C:\Work\Test\PackTest.class は不正です。 クラスファイル Test.PackTest に不正なクラスがあります。 削除するか、クラスパスの正しいサブディレクトリにあるかを確認してください。 PackTest.methodA(); ^
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Cfg4sA3W4s
- ベストアンサー率38% (31/81)
javac -d . PackTest.java の「 -d .」を指定しているせいで、C:\Work\Test の下に Test フォルダが作られ、その中に、PackTest.class があるため、class ファイルが見つからないというエラーです。 javac PackTest.java とすれば、C:\Work\Test に class ファイルが作られるので、問題が解決すると思います。
- Cfg4sA3W4s
- ベストアンサー率38% (31/81)
同じような質問と解決法が載っています。参考にしてください。 http://www.hyuki.com/jq/jqdig0056_package.html
補足
ありがとうございます。 実は、同じサイトを既に拝見しており、クラスパスを指定してコンパイルしたのですが、「エラー例(2)」のように、やはりエラーが出てしまう状態なのです。 クラスパスの指定が間違っているのでしょうか・・・。 なお、以下のクラスパス指定で実行した場合、「エラー例(1)」と同じエラーが出現します。 >javac -classpath C:\Work UsePack.java