• 締切済み

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();      ^

みんなの回答

回答No.2

javac -d . PackTest.java の「 -d .」を指定しているせいで、C:\Work\Test の下に Test フォルダが作られ、その中に、PackTest.class があるため、class ファイルが見つからないというエラーです。 javac PackTest.java とすれば、C:\Work\Test に class ファイルが作られるので、問題が解決すると思います。

回答No.1

同じような質問と解決法が載っています。参考にしてください。 http://www.hyuki.com/jq/jqdig0056_package.html

koyuki80
質問者

補足

ありがとうございます。 実は、同じサイトを既に拝見しており、クラスパスを指定してコンパイルしたのですが、「エラー例(2)」のように、やはりエラーが出てしまう状態なのです。 クラスパスの指定が間違っているのでしょうか・・・。 なお、以下のクラスパス指定で実行した場合、「エラー例(1)」と同じエラーが出現します。 >javac -classpath C:\Work UsePack.java

関連するQ&A