2010-08-01 3 views
1

Я пытаюсь работать с примером HelloWorld в Интернете, который показывает вам, как создать файл сборки с помощью ANT в Eclipse. Это файл сборки проекта из веб-примераСоздание файла сборки с ant

<?xml version="1.0" encoding="UTF-8"?> 
<project name="HW.makejar" default="makejar" basedir="."> 
    <target name="makejar" description="Create a jar for the HW project"> 
     <jar jarfile="HelloWorld.jar" includes="*.class" basedir="."/> 
    </target> 
</project> 

Но когда я запускаю в результате банку, я получаю сообщение об ошибке не удалось загрузить манифеста атрибут Main-Class от HelloWorld.jar.

Итак, я попытался это так:

<?xml version="1.0" encoding="UTF-8"?> 
<project name="HW.makejar" default="makejar" basedir="."> 
    <target name="makejar" description="Create a jar for the HW project"> 
     <jar jarfile="HelloWorld.jar" includes="*.class" basedir="."> 
      <manifest> 
       <attribute name="Main-Class" value="ami.HelloWorld" /> 
      </manifest> 
     </jar> 

    </target> 
</project> 

Когда я перезапустил результате банку, я получил следующее сообщение об ошибке:

Exception in thread "main" java.lang.NoClassDefFoundError: ami/HelloWorld 

Что я делаю неправильно. Кстати, когда я вручную компилирую исходный код и задаю Main.class внутри Eclipse, получающаяся банка работает отлично.

+0

<имя проекта = "HW.makejar" по умолчанию = "makejar" имя_базовой_папки => \t <цель имя = "makejar" описание = "Создать баночку для проекта HW"> \t \t <баночка jarfile = "HelloWorld.jar" включает в себя = "* класса." BASEDIR = /> \t "" - -> Это первый XML-файл – Elliott

+0

\t \t \t \t \t \t \t \t \t \t <имя атрибута =" «значение = "Main-Class ami.HelloWorld"/> \t \t \t \t \t \t -> Это второй файл XML – Elliott

+0

. Все эти комментарии в XML не очень читаемы, вы можете удалить эти комментарии и отредактировать вопрос, чтобы включить xml, который у вас есть до сих пор? – rsp

ответ

2

В вашем файле jar содержатся файлы классов? В противном случае попробуйте:

<jar jarfile="HelloWorld.jar" includes="**/*.class" basedir="."> 
+0

Как вам предположил, что файл jar не содержит файлов классов. Я изменил файл проекта, как вы предложили. Теперь мой файл проекта выглядит так: \t < имя целевой = "makejar" описание = "Создать баночку для проекта HW"> \t \t <баночка jarfile = "HelloWorld.jar" включает в себя = "** \ *. класс" BASEDIR = ""> \t \t \t файл класса находится там, но это то, что происходит, когда я запускаю его. c: \ workspace \ HW> java -jar HelloWorld.jar Не удалось загрузить атрибут манифеста Main-Class из HelloWorld.jar – Elliott

+0

Попробуйте добавить тег обратно в файл проекта - я думаю, что в сообщении об ошибке говорится, что Main В манифесте отсутствует атрибут класса. – richj

+0

Я только что восстановил проект со всеми этими изменениями, и теперь он работает. Кто знает. Может, что-то испортилось. Во всяком случае, спасибо за указатели. Я начал работать в правильном направлении. – Elliott

0

Правильно ли вы на вашем основании? Если вы jar tvf HelloWorld.jar - это класс HelloWorld.class, указанный в папке ami? Если он указан непосредственно под корнем, вам нужно добавить его из родительской папки, а не из папки ami.

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