почему не запускается jar файл? An unexpected error occurred while trying to open file

250
30 ноября 2017, 02:01

Создал архив 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)
MainClass: 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?

Answer 1

В общем не знаю, что произошло(((( Но я в xml файле переписал заново от клавиатуры имя атрибута в манифесте (Стер "Main-Class" и снова написал"Main-Class") и о чудо всё прекрасно заработало. И еще в вывложенном xml файле копирую имя атрибута "Main-Class" и вставляю его в свой xml , очищаю, снова собираю джарник, запускаю и опять выбрасывает ошибку!!! Переписываю снова от клавиатуры очищаю, собираю, запускаю - все работает. Магия какая-то(((

Answer 2

Проблема в следующем: в конфигурации сборки в строке

<attribute name="Main–Class" value="${ant.project.name}"/>

символ - это не дефис, а короткое тире. Поэтому данный атрибут не читается при попытке запуска. Скорее всего дело в том, что данная конфигурация была откуда-то скопирована в таком виде.

Чтобы решить проблему - исправьте в этой строке тире на дефис.

READ ALSO
Программное отключение телефона

Программное отключение телефона

Нужно как-то в android приложении сделать так, чтобы при вызове void'a отключался телефон (полностью, не экран)Как это сделать? Подскажите, пожалуйста)

198
Шифрование текста

Шифрование текста

Подскажите, есть ли лучшее решение для шифрования строки?

238