web-dev-qa-db-ja.com

スレッド「メイン」の例外Java.lang.NoClassDefFoundError:間違った名前

私のファイルディレクトリ:

project/src/m2mcom/entities/AutomatedTelnetClient.Java
           /web/Simple.Java           
           /org/Apache/commons/net/telnet/TelnetClient.Java 

Simple.Javaのソースコード:

package m2mcom.web;
import m2mcom.entities.AutomatedTelnetClient;
import Java.util.*;
import Java.io.*;

public class Simple {
    public static void main(String [] args) {
        try {
            AutomatedTelnetClient telnet = new AutomatedTelnetClient();
            String answer = telnet.request();
            System.out.println(answer);
        } catch (Exception e) {
            System.err.println("Error");
        }
    }
}

そして、コンパイルのエラーなしでSimple.classを実行すると、次のエラーメッセージが表示されます。

C:\Users\Victor\Desktop\project2\src\m2mcom\web>Java Simple
Exception in thread "main" Java.lang.NoClassDefFoundError: Simple (wrong name: m
2mcom/web/Simple)

誰もこれを解決する方法を知っていますか?

21
vicesbur

間違ったフォルダーで、間違ったクラス名でコマンドを実行しています。 Javaクラス。 .web.Simple(packagem2mcom.websimple name Simpleの組み合わせ)。

適切なディレクトリを推測する限り、クラスは階層フォルダー構造に格納されます。これは基本的にC:\Users\Victor\Desktop\project2\srcで始まります。

したがって、プログラムを正しく実行するには、C:\Users\Victor\Desktop\project2\srcから、次を実行します。

Java m2mcom.web.Simple
36
Perception
package m2mcom.web;

上記の行を削除して再コンパイルします。 netbeansでコードを実行すると、クラスファイルにないm2mcom.webパッケージに含まれます。

5
Prasad De Silva

したがって、Javaコマンドを実行するときは、パッケージ名のすぐ上のディレクトリにいる必要があります。

0
scvblwxq