Создал архив jar при помощи ANT. Код сборки:
<?xml version="1.0"?>
<project name="HelloWorld" default="run">
<!-- define names of directories -->
<property name="src" location="src"/>
<property name="build" location="build"/>
<property name="classes" location="${build}/classes"/>
<!-- define all targets -->
<target name="hello">
<echo>Hello, World!</echo>
</target>
<target name="compile">
<mkdir dir="${classes}"/>
<javac srcdir="${src}" destdir="${classes}" includeAntRuntime="false"/>
</target>
<target name="run" depends="hello, compile">
<java classname="${ant.project.name}" classpath="${classes}"/>
</target>
<target name="clean">
<delete dir="${build}"/>
</target>
<target name="package" depends="compile">
<jar destfile="${build}/${ant.project.name}.jar" basedir="${classes}">
<manifest>
<attribute name="Main–Class" value="${ant.project.name}"/>
</manifest>
</jar>
</target>
</project>
Создался файл HelloWorld.jar
с манифестом MANIFEST.MF
с кодом:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.10.1
Created-By: 1.8.0_131-b11 (Oracle Corporation)
Main–Class: HelloWorld
Теперь когда от руки в консоли от места где находится папки SRC
и BUILD
запускаю:
java -jar build/HelloWorld.jar
то появляется следующая ошибка:
Error: An unexpected error occurred while trying to open file build/HelloWorld.jar
переменные окружения перепроверил JAVA_HOME
и PATH
указан путь на папку bin из JDK1.8
Помогите разобраться, почему на запускается файл HelloWorld
?
В общем не знаю, что произошло(((( Но я в xml файле переписал заново от клавиатуры имя атрибута в манифесте (Стер "Main-Class" и снова написал"Main-Class") и о чудо всё прекрасно заработало. И еще в вывложенном xml файле копирую имя атрибута "Main-Class" и вставляю его в свой xml , очищаю, снова собираю джарник, запускаю и опять выбрасывает ошибку!!! Переписываю снова от клавиатуры очищаю, собираю, запускаю - все работает. Магия какая-то(((
Проблема в следующем: в конфигурации сборки в строке
<attribute name="Main–Class" value="${ant.project.name}"/>
символ –
- это не дефис, а короткое тире. Поэтому данный атрибут не читается при попытке запуска. Скорее всего дело в том, что данная конфигурация была откуда-то скопирована в таком виде.
Чтобы решить проблему - исправьте в этой строке тире на дефис.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужно как-то в android приложении сделать так, чтобы при вызове void'a отключался телефон (полностью, не экран)Как это сделать? Подскажите, пожалуйста)