🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.java
Article #154211

Re: Jak wywoływać programy w Javie ?

#154211
From: Pit
Date: Mon, 13 Jul 2015 00:49
46 lines
3451 bytes
Dnia 12.07.2015 Borneq <borneq@antyspam.hidden.pl> napisał/a:
> Eksportuję program do jara. Jest napisany z użyciem SWT, więc eksportuje 
> wszystko. Czy można wybrać tylko używane klasy/metody?

To że ty korzystasz tylko z klas X i Y oraz metod powiedzmy X.a i Y.b nie
oznacza, że te metody wewnętrznie nie korzystają z innych klas/metod. Nawet
na poziomie kompilacji może być problem z określeniem wszystkich
potrzebnych klas, bo te moga być ładowane dynamicznie w trakcie
działania programu (Java ma pod tym względem wiele mechanizmów, można na
przykład w trakcie działania programu załadować klasy/obiekty nie tylko z
pliku na dysku, ale też z działającej innej maszyny wirtualnej czy przez
internet - nie wiem czy SWT z tego korzysta, bo nie używam, ale generalnie
biblioteki załączam w całości).

> A może lepiej jeden STW.jar dla wszystkich, które go używają?

Można jar wewnątrz jar-a (definiując odpowiednio classpath w manifeście) a
można bibliotekę załączyć do jar-a "rozpakowaną" (wtedy może być więcej
zabawy z manifestem, bo generalnie każda biblioteka *.jar ma swój manifest
i swoje ustawienia).


> Następny problem: trzeba wołać: java -jar moja_aplikacja.jar
> pomaga napisanie .bat czy .cmd, jednak jest kłopot: gdy wołam zostaje 
> czarna konsola na ekranie, co gorsza - nie zamyka się po ukończeniu 
> programu!

Jeśli nie zamyka się po zakończeniu programu, to znaczy, że... program się
nie kończy, a jedynie zamykasz okienko programu (maszyna wirtualna chodzi
dalej). Na pewno prawidłowo obsługujesz kliknięcie w "krzyżyk" głównego
okienka programu? Sprawdź w procesach :D
Robienie "exeka" spowoduje, że stracisz jedną z zalet Javy - przenośność
(taki plik *.exe nie będzie już działał na Mac-u czy pod Linuxem bez
dodatkowych zabiegów). Ja w Windowsie "mapuję" pliki *.jar z programem
javaw i okienko tekstowe w ogóle się nie pojawia ale do testów oczywiście
używam "tekstowej" wersji przy tworzeniu programu, bo często wyrzucam na
konsolę różne informacje diagnostyczne pomocne przy szukaniu błędów.

> Czy więc nie lepiej napisać callera jako execa jak eclipse.exe ? Choć i 
> tak jest duży (326 kilo) jak na programik, który tylko woła inny program.

Jeśli to ma być tylko na Windowsa, to można, ale większość zwykłuch userów
ma zainstalowane tylko JRE a ono pod Windowsem domyślnie ustawia obsługę
plików *.jar przez program javaw, więc nie ma z tym problemu.
Co do samej wielkości gotowego programu - nie przejmuj się tym, czasy
dyskietek już dawno minęły :D
Technical Details
Message-ID: <slrnmq62oc.24j.nospam@nc10.lan>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
References: <mnus1o$r32$1@node2.news.atman.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From: Pit <nospam@sdf.lonestar.org>
Newsgroups: pl.comp.lang.java
Subject: Re: Jak wywoływać programy w Javie ?
Date: Mon, 13 Jul 2015 00:49:16 +0000 (UTC)
Organization: ATMAN - ATM S.A.
Lines: 46
Message-ID: <slrnmq62oc.24j.nospam@nc10.lan>
References: <mnus1o$r32$1@node2.news.atman.pl>
NNTP-Posting-Host: user-109-243-69-183.play-internet.pl
Mime-Version: 1.0
X-Trace: node2.news.atman.pl 1436748556 31812 109.243.69.183 (13 Jul 2015 00:49:16 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Mon, 13 Jul 2015 00:49:16 +0000 (UTC)
User-Agent: slrn/1.0.1 (Linux)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit