Создание работоспособной банки - PullRequest
1 голос
/ 22 февраля 2012

Хорошо, это второй раунд моей проблемы. Я создал простую программу в блокноте и сохранил ее как (Blocktestgui.java) Java-файл. Я компилирую с помощью команды javac Blocktestgui.java и получаю (Blocktestgui.class) Я создал файл текстового манифеста (см. Ниже) и сохранил его как manifest.mf Затем я запускаю команду jar cvf bg.jar Blocktestgui.class manifest.mf и получаю (bg.jar)

Это мой java-файл:

import javax.swing.JOptionPane;
public class Blocktestgui {
public static void main(String[] args) {

    String firstNumber, secondNumber;
    double number1, number2, sum;

    firstNumber=JOptionPane.showInputDialog ("Enter wall length in decimal feet:",JOptionPane.INFORMATION_MESSAGE);
    secondNumber=JOptionPane.showInputDialog ("Enter wall height in decimal feet:",JOptionPane.INFORMATION_MESSAGE);

    number1=Double.parseDouble (firstNumber);
    number2=Double.parseDouble (secondNumber);

    sum = (number1*number2) / 0.88;

    JOptionPane.showMessageDialog (null, "Total Blocks are " + sum,"Results",JOptionPane.PLAIN_MESSAGE);
    System.exit (0);
    }
}

Это мой manifest.mf до создания баночки:

Main-Class: Blocktestgui

Когда я извлекаю содержимое банки, я получаю папку и два файла

Папка> - META-INF <- содержит MANIFEST.MF <- Этот файл не содержит строку Main-Class: Blocktestgui </strong>

Файл> - Blocktestgui.class

Файл> - manifest.mf <- Все, что говорит этот файл - Main-Class: Blocktestgui </strong>

TestFolder/
    |- META-INF/
        |- MANIFEST.MF (This file does not contain the line Main-Class: Blocktestgui)
    |- Blocktestgui.class
    |- manifest.mf (This file says is Main-Class: Blocktestgui)

Когда я запускаю файл jar в консоли с помощью java -jar bg.jar, он выдает ошибку «нет атрибута главного манифеста в bg.jar»

Что я облажался?

Ответы [ 3 ]

4 голосов
/ 23 февраля 2012

Вы должны указать информацию о манифесте отдельно, а не просто как один из включаемых файлов:

С Документы :

jar c[v0Mmfe] [manifest] [jarfile] [entrypoint] [-C dir] inputfiles [-Joption]

В вашем случае:

jar cvmf manifest.mf bg.jar Blockingtestgui.class

Или, проще, без специального файла манифеста:

jar cvfe bg.jar Blockingtestgui.class Blockingtestgui.class

Первый Blockingtestgui.class указывает точку входа, второй - файлы, которые нужно включить. Обратите внимание, здесь важен порядок флагов; информация m, f и e должна отображаться в том порядке, в котором указаны флаги.

1 голос
/ 23 февраля 2012

Я предлагаю использовать инструмент сборки для создания файла JAR, а не пытаться создать его самостоятельно.

Apache Ant обычно используется для создания файлов JAR.

Здесь приведены инструкции по установке Ant в Windows.

Вот руководство по написанию файла Ant build.xml для вашего проекта.

0 голосов
/ 23 февраля 2012

Убедитесь, что ваша отдельная строка в файле manifest.mf заканчивается символом новой строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...