Подтвердить что ты не робот

Исключение в потоке "main" 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)

Кто-нибудь знает, как это решить?

4b9b3361

Ответ 1

Вы выполняете команду в неправильной папке с неправильным именем класса. При запуске Java-класса необходимо использовать полное имя (FQN). И, конечно же, вы должны быть в правильном каталоге. В вашем примере FQN вашего класса - m2mcom.web.Simple(сочетание пакета m2mcom.web и простого name Simple).

Что касается вывода правильного каталога, ваши классы хранятся в иерархической структуре папок, которая в основном начинается с C:\Users\Victor\Desktop\project2\src.

Итак, чтобы правильно выполнить вашу программу, от C:\Users\Victor\Desktop\project2\src, do;

java m2mcom.web.Simple

Ответ 2

package m2mcom.web;

удалить выше строки и перекомпилировать ее. когда вы запускаете свой код в netbeans, в том числе в пакете m2mcom.web. Это не в вашем файле класса.

Ответ 3

Таким образом, вы должны находиться в каталоге прямо над именем пакета при выполнении команды java, которая должна быть в виде packageagename.classname без суффикса .class.