Исключение в потоке "основной" java.lang.NoClassDefFoundError - PullRequest
5 голосов
/ 24 марта 2010
package pack;


public class sample{ 

 public static void main(String input[])
    {

        NumberFormat numberFormat = new DecimalFormat("#,##0.00##");
    System.out.println(numberFormat.format(44533125.00));

    } 
}

код работает нормально в текущем каталоге .. (c: / myprogram /).

после этого я скопирую файл sample.class и вставлю его в другой каталог (d: /MyProgram).я получил ошибку во время работы, как

Exception in thread "main" java.lang.NoClassDefFoundError: sample (wrong name: pack/sample)

В Java-файл .class может работать где угодно, верно?но почему я не могу бежать?

Ответы [ 3 ]

18 голосов
/ 24 марта 2010

В пакете должен быть файл классов - поэтому он должен находиться в каталоге с именем pack. Затем с родительским каталогом в classpath вы запустите

java pack.sample

(Вы должны также изменить имя класса на Sample, чтобы следовать соглашениям, между прочим - и запустить pack.Sample.)

Если вы собираете с помощью javac, укажите опцию "-d", чтобы указать базовый каталог, и он при необходимости создаст соответствующую структуру пакета. Например:

javac -d classes Sample.java

или

javac -d classes src/pack/Sample.java

создаст (в обоих случаях)

classes/pack/Sample.class

Вы можете запустить

java -cp classes pack.Sample
0 голосов
/ 02 марта 2015

IntelliJ и, возможно, другие IDE не изменяют конфигурацию Run / Debug. Вы должны вручную изменить имя вашего пакета, предшествующее имени вашего основного класса. Например, измените «sample.Main» на «com.company.package.ui.Main», чтобы он запускался правильно при следующей попытке его запустить. IDE, возможно, уже пометил кнопку Run / Debug красным крестиком, потому что не смог найти основной класс. Он также выдает предупреждение при открытии конфигурации Run / Debug.

0 голосов
/ 06 августа 2012

Если вы не используете один файл java / class, вы также можете удалить оператор пакета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...