いや,いつもEclipseを使っていたので基本的なことがわかっていませんでした。
コマンドプロンプトからJavaを実行したとき,次のエラーが出たときの対処法。
classファイルが存在する場所を設定する。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/tooldocs/windows/classpath.html
が存在する必要があります。
そのほか,参考サイト
http://www.ibm.com/developerworks/jp/java/library/j-dclp2/
ClassNotFoundException
Java仕様では、ClassNotFoundExceptionを次のように記述しています。
アプリケーションが、
Classクラスの中でforName() メソッドを使ったストリング名によって
ClassLoaderクラスの中でfindSystemClass method() メソッドを使ったストリング名によって
ClassLoaderクラスの中でloadClass() メソッドを使ったストリング名によって
JVM仕様では、NoClassDefFoundErrorを次のように定義しています。
Java仮想マシンまたはClassLoaderインスタンスが、(通常のメソッド・コールの一部として、または新しい表現を使って新しいインスタンスを作成する一部として)クラスの定義の中にロードしようとして、そのクラスの定義が見つからない時に投げられます。
検索対象のクラス定義が、現在実行中のクラスをコンパイルした時には存在したにもかかわらず、もはや見つかりません。
Exception in thread "main" java.lang.NoClassDefFoundError: B
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:810)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:147)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:475)
at java.net.URLClassLoader.access$500(URLClassLoader.java:109)
at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:848)
at java.security.AccessController.doPrivileged1(Native Method)
at java.security.AccessController.doPrivileged(AccessController.java:389)
at java.net.URLClassLoader.findClass(URLClassLoader.java:371)
at java.lang.ClassLoader.loadClass(ClassLoader.java:572)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:442)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
at NoClassDefFoundErrorTest.main(NoClassDefFoundErrorTest.java:3)
コマンドプロンプトからJavaを実行したとき,次のエラーが出たときの対処法。
エラー:メイン・クラス○○○が見つからなかったかロードできませんでした
classpathの設定が正しくない。
classファイルが存在する場所を設定する。
java -classpath [クラスパス] Hoge
http://java.sun.com/j2se/1.5.0/ja/docs/ja/tooldocs/windows/classpath.html
mainメソッドの型が不正
public static void main(String[] args)
が存在する必要があります。
そのほか,参考サイト
http://www.ibm.com/developerworks/jp/java/library/j-dclp2/
ClassNotFoundException
Java仕様では、ClassNotFoundExceptionを次のように記述しています。
アプリケーションが、
Classクラスの中でforName() メソッドを使ったストリング名によって
ClassLoaderクラスの中でfindSystemClass method() メソッドを使ったストリング名によって
ClassLoaderクラスの中でloadClass() メソッドを使ったストリング名によって
JVM仕様では、NoClassDefFoundErrorを次のように定義しています。
Java仮想マシンまたはClassLoaderインスタンスが、(通常のメソッド・コールの一部として、または新しい表現を使って新しいインスタンスを作成する一部として)クラスの定義の中にロードしようとして、そのクラスの定義が見つからない時に投げられます。
検索対象のクラス定義が、現在実行中のクラスをコンパイルした時には存在したにもかかわらず、もはや見つかりません。
Exception in thread "main" java.lang.NoClassDefFoundError: B
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:810)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:147)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:475)
at java.net.URLClassLoader.access$500(URLClassLoader.java:109)
at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:848)
at java.security.AccessController.doPrivileged1(Native Method)
at java.security.AccessController.doPrivileged(AccessController.java:389)
at java.net.URLClassLoader.findClass(URLClassLoader.java:371)
at java.lang.ClassLoader.loadClass(ClassLoader.java:572)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:442)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
at NoClassDefFoundErrorTest.main(NoClassDefFoundErrorTest.java:3)
Comment
コメントする