• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:packageとimportの関係のコンパイルエラー)

packageとimportの関係のコンパイルエラー

このQ&Aのポイント
  • Javaの勉強中にpackageとimportの関係によるコンパイルエラーが発生しました。
  • ディレクトリ内のファイルを移動した際にコンパイルエラーが発生し、原因が分かりません。
  • 検索サイトでの事例を参考にしましたが解決できませんでした。お願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • UKY
  • ベストアンサー率50% (604/1207)
回答No.2

> その書籍には、 > 「クラスパスは、jpの親パスとパッケージがあるディレクトリ名」 > と記述されており、例題と同じように記述してみました。 > そのため、記述したディレクトリは存在しません。 何かその書籍は嘘をついていませんか? (というより、「クラスパスは、jpの親パスとパッケージがあるディレクトリ名」という日本語自体がわかりづらい) クラスパスというのは、class ファイルを配置するディレクトリ構造のルートを指定するものです。 今回の場合は、D:\javapress というディレクトリの中にパッケージに対応したサブディレクトリを作っているので、D:\javapress がクラスパスになります。 D:\javapress\jp\co\gihyo\javapress\test>javac -classpath D:\javapress ATMTest.java でコンパイルできませんか? 他にも D:\javapress>javac -classpath . jp\co\gihyo\javapress\test\ATMTest.java D:\javapress>javac -classpath D:\javapress jp\co\gihyo\javapress\test\ATMTest.java などやり方はいろいろあるのですが…… これでもだめならパスの設定云々の問題ではないような気がします。

asaichi
質問者

お礼

ありがとうございました。 見事コンパイルできました。 ご指摘の通り、パスの設定ミスでした。 書籍を信用し過ぎたようです。 まだまだ勉強不足な面があるので、がんばります。

その他の回答 (1)

  • UKY
  • ベストアンサー率50% (604/1207)
回答No.1

ディレクトリ構造のツリーは以下でよいでしょうか? D:\javapress └jp  └co   └gihyo    └javapress     ├test     │└ATMTest.java     └account      ├Account.java      └CommissionAccount.java ATMFrame というクラスのソースが見当たりませんが、このクラスのソースは正しく設置されているでしょうか? そして、クラスパスに設定されている D:\javapress\account というディレクトリもツリーの中にありませんが、これについてもいかがでしょう? 確認してください。

asaichi
質問者

補足

ご指摘ありがとうございます。 再度書き直しました。 ディレクトリ D:\JAVAPRESS └─jp   └─co     └─gihyo       └─javapress         ├─test         │   ATMTest.java         ├─atm         │   ATMFrame.java         └─account             Account.java             CommissionAccount.java コンパイル D:\JavaPress\jp\co\gihyo\javapress\test>javac -classpath D:\JavaPress\Account ATMTest.java ATMTest.java:2: シンボルを解釈処理できません。 シンボル: クラス ATMFrame 位置  : atm の パッケージ import jp.co.gihyo.javapress.atm.ATMFrame; パッケージ ATMTest.javaの内容 package jp.co.gihyo.javapress.test; import jp.co.gihyo.javapress.atm.ATMFrame; import jp.co.gihyo.javapress.account.*; class ATMTest { Account.javaの内容 package jp.co.gihyo.javapress.account; public class Account { ATMFrame.javaの内容 package jp.co.gihyo.javapress.atm; import jp.co.gihyo.javapress.account.Account; >クラスパスに設定されている D:\javapress\account という これは、サンプルとしていた書籍と同じように設定しました。 その書籍には、 「クラスパスは、jpの親パスとパッケージがあるディレクトリ名」 と記述されており、例題と同じように記述してみました。 そのため、記述したディレクトリは存在しません。 試しにjpの親パス(D:\javapress)で記述してみてもコンパイルが 通りませんでした。 お手数おかけしますがよろしくお願いします。