2013-05-14 2 views
0

Как создать исполняемый файл .jar из файла класса? Я нашел довольно простые инструкции в Интернете, которые предполагают создание манифеста, а затем уплотнение его с терминала.Проблема создания рабочего .jar

Ужасный фактор, однако, заключается в том, что я запрограммировал эту вещь, файл класса - это собственный клиент ... он отлично работает в компиляторе, но я думаю, что это может каким-то образом изменить стандартный манифест? Моя программа выглядит примерно так:

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import java.util.*; 

public class Schedule implements ActionListener { 
    public static void main(String[] args) { 
    Schedule gui = new Schedule(); 
    } 
    public Schedule() { 
    public void actionPerformed(ActionEvent event) { 
     //... 
    } 
    //... 
    private class CheckboxListener implements ItemListener { 
     //... 
    } 
    } 
} 

После того как я составил этот Schedule программу, компилятор добавил кучу дополнительных классов в каталоге, поэтому в каталоге теперь есть Schedule.class, что называется Schedule$1.class, Schedule$CheckboxListener.class и пучок других классов (отформатирован аналогично Schedule$CheckboxListener.class).

Простой вопрос, мне интересно, как должен выглядеть мой файл манифеста. Прямо сейчас у меня есть:

Main-Class: Schedule 

но это не создает рабочий файл .jar. Что я делаю не так?

+1

Когда вы говорите «работая», чего вы ожидали? Как вы вызываете JAR-файл и что он делает? Вы получаете сообщения об ошибках? – Gian

+0

Когда я дважды щелкните Schedule.jar я получаю следующее сообщение об ошибке: Исключение в потоке «основной» java.lang.NoClassDefFoundError: Расписание $ CheckBoxListener \t в Перечне. (Schedule.java:49) \t в Schedule.main (Schedule.java:8) Вызванный: java.lang.ClassNotFoundException: График $ CheckboxListener \t в java.net.URLClassLoader $ 1.run (URLClassLoader.java: 202) \t на java.security.AccessController.doPrivileged (нативный метод) \t в java.net.URLClassLoader.findClass (URLClassLoader.java:190) \t в java.lang.ClassLoader.loadClass (ClassLoader.java:306) ... – user2379931

+0

Вы должны включить эти дополнительные классы, которые делает компилятор javac. $ Означает внутренний класс. – 2013-05-14 03:25:35

ответ

0

Вы фактически поместили файлы классов в файл Jar? Вы никогда не говорили об этом. См Creating a JAR File, или в основном это работает так:

jar cf file.jar input-file(s) 

Вы можете открыть файл Jar с помощью любой программы, которая может открыть Zip-файлы, как Winzip или 7-Zip. Или вы можете просто использовать инструмент командной строки jar:

jar tf file.jar 
+0

Да, это билет. Большое спасибо вам и другим выше! – user2379931

+0

Отлично, добро пожаловать. Поскольку это ответили на ваш вопрос, и поскольку вы новичок в StackOverflow, см. Http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –