Создал архив 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}"/>
символ – - это не дефис, а короткое тире. Поэтому данный атрибут не читается при попытке запуска. Скорее всего дело в том, что данная конфигурация была откуда-то скопирована в таком виде.
Чтобы решить проблему - исправьте в этой строке тире на дефис.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости