2012-02-22 2 views
1

Хорошо, это круглая вторая проблема. Я создал простую программу в блокноте и сохранил ее как файл (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 

Когда я извлечь содержимое баночки я получаю папку и два п Īles

Folder> - META-INF < --contains Manifest.mf < - Этот файл не содержит строку Main-Class: Blocktestgui

Файл> - Blocktestgui.class

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

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»

Что я испортил?

ответ

0

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

4

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

От the docs:

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

В вашей case:

jar cvmf manifest.mf bg.jar Blockingtestgui.class 

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

jar cvfe bg.jar Blockingtestgui.class Blockingtestgui.class 

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

+0

Большое вам спасибо!Хотя мне все еще нужно перечитывать сообщение, чтобы понять, что на самом деле работает здесь, первая строка работала как шарм. 'jar cvmf manifest.mf bg.jar Blocktestgui.class' Я только начинаю, и некоторые из этих понятий сложны. Я читаю начальную java-книгу и после главы о JOptionPanes я решил попробовать свои собственные, и мне нужен рабочий файл jar, а затем exe, просто чтобы посмотреть, смогу ли я это сделать. Спасибо за помощь снова! – Izodness