いつもお世話になっております。
Javaのpackage機能について教えていただけますでしょうか。
ただいまJavaの勉強中で、本を購入し、それを基にソースを書いたり動かしております。
その中にpackage機能について説明とサンプルソースがあるのですが、
本のまま書いてもエラーで動きません。本とソースを見比べても相違が見られないため
何が原因かも分からず、困っております。
内容
・Cドライブ直下にwork3というフォルダを作成
・work3直下にMain.javaを作成する。
・work3の中にconverterというフォルダを作成する。
・converterフォルダ内にDollar.javaとEuro.javaを作成する。
・コマンドプロンプトにてc:\work3に移動し、Javac **.javaを実行後、java Mainを実行する。
コンパイルは成功し、それぞれのclassファイルは作成されております。
実行すると
C:\work3>java Main
Exception in thread "main" java.lang.NoClassDefFoundError: Main (wrong name: con
verter/Main)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: Main. Program will exit.
とエラーが出て実行されません。
実際のソースです。
******************
package converter;
public class Dollar {
public static int toYen(int dollar){
return dollar * 90;
}
}
******************
package converter;
public class Euro {
public static int toYen(int euro){
return euro * 120;
}
}
******************
package converter;
class Main {
public static void main(String[] args){
System.out.println("1ドルは" + Dollar.toYen(1) + "円です。");
System.out.println("1ユーロは" + Euro.toYen(1) + "円です。");
}
}
******************
ちなみにですが、3つのソースはjarファイルの実習で使用し、うまく動いてくれました。
packageの実習でpackage ***を一行追加しただけです。
よろしくお願いいたします。
お礼
私のためにお手数おかけいたしまして申し訳ございませんでした。 import文は次の実習でありまして、そちらではちゃんと動いてくれました。 本は日○ソ○ト○ェアの最新Javaプログラミングという本です。 packageは一旦飛ばします。monoerezsh様に教えていただいたように packageは同階層に置いて使う importは別階層で使う という感じで次に進みたいと思います。 本当にありがとうございました。