2011-02-06 2 views
1

У меня есть установка сборки, которая требует, чтобы мои классы были помещены в папку в подкаталоге моего текущего каталога. IE, если я на '.', То классы могут находиться в './somewhere_else/'Main-Class не может быть установлен в существующий класс

Проблема в том, что когда я это делаю, я не могу установить значение для Main-Class, которое может найти основной класс. У меня нет никаких проблем, когда я строю баночку из файлов на, но все последующие попытки для основного результата класса в java.lang.NoClassDefFoundError на «»:

Main-Class: ClassName 
Main-Class: FolderName.ClassName 
Main-Class: FolderName/ClassName 

Что я должен использовать?

ответ

1

Классы внутри вашей банки должны быть в той же структуре каталогов, что и ваша структура пакета.

  • Итак, если вы хотите иметь свой класс ClassName (без какого-либо пакета), чтобы быть основным класс, он должен находиться в корневой директории вашей баночки.
  • Если вы хотите иметь класс в каталоге FolderName, это же имя должно быть именем пакета, то есть первая строка (не пустая не-комментарий) вашего исходного файла должна быть package FolderName;.

Если ваша проблема - это только установка сборки - это не проблема, папка-макет ваших каталогов за пределами банки не обязательно должен быть таким же, как макет внутри вашей банки. Но это все еще помогает, если папка-структура подходит к структуре пакета (возможно, дополнительные каталоги выше).

0

Я думаю, что вы должны ссылаться на Main-Class просто по имени класса (без структуры каталога). Что поможет вам решить эту проблему, это то, что вы ставите как classpath. Убедитесь, что каталог Main-Class находится в пути к классам.

0

Если ClassName находится в пакете FolderName, то он должен быть: -

Manifest-Version: 1.0 
Main-Class: FolderName.ClassName 
Class-Path: <third-party>.jar <another-third-party>.jar 

Они чувствительны к регистру, кстати.

Смежные вопросы