![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Shorr Kan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 30.12.2003 Репутация: нет Всего: нет |
В \demo\jfc\ лежат файлы .jar. Они запускаются именно приложением. При компилировании же моего кода - создается файл .class. Правильно ли я понял, что вот эти мои .class только для консоли, а, если я хочу получить win-окно с приложением, то должен превратить свой .class в .jar? Если правильно, то как это сделать? Если нет, то что это за .jar такие?
|
|||
|
||||
Shorr Kan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 30.12.2003 Репутация: нет Всего: нет |
Так, дополняю:
Собрал приложение, и получил-таки НЕ консольное окошко (но с без .jar. С ними так ничего и не понимаю). Вот приложение: import java.awt.*; public class win { public static void main(String args[]) { MainFrameWnd frame = new MainFrameWnd("Win1"); frame.show(); } } class MainFrameWnd extends Frame { public MainFrameWnd(String sTitle) { super(sTitle); } } Если же после строки super(sTitle); добавляю setSize(400, 200); То дает следующую ошибку: Error:win.java(8):Method setSize(int, int) not found in class MainFrameWnd. В чем тут дело? |
|||
|
||||
SmaLL |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 557 Регистрация: 17.12.2002 Где: Voronezh Репутация: 1 Всего: 2 |
Надо читать API-доку
Нет такого метода setSize(int x, int y) Есть метод public void setSize(Dimension d) Соответственно надо писать:
-------------------- Что ни делается - всЁ к лучшему! SmallWeb Мой адрес не дом и не улица, мой адрес родной пивзавод! |
|||
|
||||
Shorr Kan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 30.12.2003 Репутация: нет Всего: нет |
И вот что выдает:
Error:win.java(17):Method setSize(java.awt.Dimension) not found in class MainFrameWnd. Info : this.setSize(new Dimension(400, 200)); |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Можно посмотреть в Java FAQ Вопрос: С чего начать, чтобы написать простое приложение для Swing
А вместо setSize использовать setBounds(100,100,200,200) |
|||
|
||||
DarkDS |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
jar файл это архив класс файлов. То есть приложение запускатся может как из jar файлов так и просто из класс файловь. Преимушество jar файлов в том что 1. вместо россыпи файлов у тебя всего 1 файл. 2. jar файлы можно подписывать (для запуска приложений с повышенными правми в вебстарте нужны подписанные файлы) 3. можно задать майн класс (сокращает строку запуска) по своей струкутре jar файл - обычный зип файл. Правда помимо класс файлов там еще лежит каталог MetaInf в котором находится Manifest.mf (описатель jar файла) и могут находится файлы подписи. Майн класс прописывается в Manifest.mf. Самый простой способ создать jar файл: Создать test.jar и добавить в него test.class: jar -cvf test.jar test.class Создать test.jar и добавить в него все файлы и каталоги из каталога test: jar -cvf test.jar -С test/ использование: jar {ctxu} [jar-file] [manifest-file] [-C dir] files ... Опции для jar команды -c Создать новый архив -t показать содержимое архива -x распакавать названный файл ( или все)из архива -u изменить созданный архив -v вывести статистику -f задать имя архива -m добавить созданный майнфест Там есть еще пара, но это основыне. |
|||
|
||||
Shorr Kan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 30.12.2003 Репутация: нет Всего: нет |
Ой, получилось
![]() Но возник следующий вопрос... Новый топик ![]() |
|||
|
||||
Shorr Kan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 30.12.2003 Репутация: нет Всего: нет |
Не получается создать jar-архив.
C:\j2sdk1.4.2_03\bin>javac StartApp.java C:\j2sdk1.4.2_03\bin>java StartApp Тут все работает. Далее: C:\j2sdk1.4.2_03\bin>jar cvf svm.jar StartApp.class added manifest adding: StartApp.class(in = 845) (out= 559)(deflated 33%) И теперь, после запуска svm.jar, выдает ошибку: Failed to load Main-Class manfest attribute from C:\j2sdk1.4.2_03\bin\svm.jar Что такое? |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
А строчку запуска можешь показать ? А лучше всю последовательность действий расписать подробнее. Да и в архив лучше все-таки пакет класть. А у тебя класс верхнего уровня - с ним всегда какие-то заморочки, если есть jar. |
|||
|
||||
Гость_Shorr Kan |
|
|||
Unregistered |
Строчку запуска? А просто два клика на .jar ... Остальные-то ведь так работают. Я думал, что и мой должен бы...
Последовательность: Архивирую в .jar рабочий .class . Он превращается в такой вот нерабочий .jar ... Подробнее некуда, честно говоря. Что значит "пакет класть"? |
|||
|
||||
AntonSaburov |
|
||||||||||||||||||||||||||||||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Для того, чтобы запустить jar в нем есть такой каталог - META-INF. В нем есть файл - MANIFEST.MF. И вот если его посмотреть, то там должен быть написано Main-Class:<имя класса> И вот если это тот класс, который нужно, то по и дее должно все запускаться. Если же нет там такого - то само собой ничего не запустится. Видимо еще один вопрос надо будет в FAQ положить ![]() А сейчас главное - ты похоже пользуешься JBuilder или еще чем-то похожим. Так вот в JAR-файл кроме классов входит так называемый manifest - каталог META-INF, в котором находится файл MANIFEST.MF. В этом файле хранится достаточно много полезной информации. В том числе может хранится имя класса, который имеет метод main и его надо запускать. IDE обычно порождая такой jar записывают туда информацию о главном классе. А когда ты это делаешь ручками, то просто так это не получится - надо указывать все самому. Для примера создадим простенькое приложение:
Соберем его с помощью команды javac MyClass.java Получим MyClass.class. Можно проверить его работоспособность запустив java MyClass Теперь мы хотим всезапаковать в JAR. Для этого надо не просто его упаковать, но и указать класс, который будет главным и мы тогда сможем запускать наш jar командой такого плана java -jar <имя jar-файла>. Для этого создадим обычный текстовый файл, например mf.txt, и запишем туда две строчки
И вот теперь создадим jar-файл с указанием того, чтобы при создании манифеста использовалась информация из mf.txt. Вот эта команда jar cvfm My.jar mf.txt MyClass.class с - создать архив v - показывать сообщения f - создать арзив в файле m - использовать текстовый файл для включения в манифест My.jar - имя архива mf.txt - имя файла с информацией для манифеста MyClass.class - имя файла, включаемого в архив. Можно здесь использовать маску (*, ? и прочая) И вот мы получили My.jar Теперь для запуска мы можем использовать строку такого вида java -jar My.jar Вот и все.
Это значит, что класть в поддиректории. И все классы будут через точку - типа java.awt.* Но это уже отдельная тема - давай ты задашь этот вопрос в еще одном топике. А то и так тема уже не соответствует. |
||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |