ホーム > Java > Windows で コマンドプロンプトから Java のプログラム実行時に NoClassDefFoundError が発生する問題

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 タグ:
  1. コメントはまだありません。
  1. トラックバックはまだありません。

Comments links could be nofollow free.