Windows で コマンドプロンプトから Java のプログラム実行時に NoClassDefFoundError が発生する問題
->
ちょっとハマッたのでメモ.
JavaでTCPサーバを書いてWindowsのコマンドプロンプトでコンパイルして実行しようとすると,
java TCPServer Exception in thread "main" java.lang.NoClassDefFoundError: tcp/TCPServer (wrong name: tcp/TCPServer) at java.lang.ClassLoader.defineClass1(Native Method) 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) at java.lang.ClassLoader.loadClassInternal(Unknown Source) Could not find the main class: tcp.TCPserver. Program will exit.
という,エラー.
コンパイルは通る,classファイルもある.
どうしたものかと思って原因を調べると,原因が判明.
どうやらJavaのクラスファイルは、packageの階層と同じディレクトリ構造にしないといけないらしく.
この例であれば、tcpserverというディレクトリを作り、
その中にコンパイルしたTCPServer.classを入れ、tcpserverの上位ディレクトリから
java tcpserver.TCPServer
もしくは
java tcpserver/TCPServerで起動できるらしい.
Java未だによく分かってない.
勉強せねば...
参考リンク
実行時のNoClassDefFoundErrorが解決できません (http://oshiete1.goo.ne.jp/qa3105812.html)関連エントリー
カテゴリー: Java
