Uruchamianie zewnetrznego programu spod javy
the0ne@op.pl - 24-12-2006 00:42
Uruchamianie zewnetrznego programu spod javy
Uruchamiam zewnetrzny program metoda:
public static void runProgram(String pathProgram, String param){ Runtime rt1 = Runtime.getRuntime(); try { Process ps1 = rt1.exec(pathProgram + param); } catch (IOException exc) { JOptionPane.showMessageDialog(null, exc, "runProgram Error", JOptionPane.ERROR_MESSAGE); } }
i ok. Ale jest problem: tworzy sie plik .dwg (bo ten zewnetrzny program go tworzy). Nastepnie musze znowu wywolac ta metode tylko tz innymi parametrami (inny program zrobi z tego .dwg pdfa). I tu jest walek bo pdf jest uszkodzony poniewaz nie zrobil sie jeszcze plik .dwg. Zauwazylem ze plik .dwg skonczy sie robic dopiero po skonczeniu calego programu. Zatem jak to pogodzic aby drugie wywolanie tej metody nastapilo dopiero po tym jak pierwsyze wywolanie skonczy robic plik?? Szukalem i probowalem na watkach, metody synchronized i nic. Chyba ze zle robie bo super z javy nie jestem.
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
kantor - 24-12-2006 00:42
Użytkownik <the0ne@op.pl> napisał w wiadomości news:4552.00000033.457fc094@newsgate.onet.pl... > Uruchamiam zewnetrzny program metoda: > > public static void runProgram(String pathProgram, String param){ > Runtime rt1 = Runtime.getRuntime(); > try { > Process ps1 = rt1.exec(pathProgram + param); > } > catch (IOException exc) { > JOptionPane.showMessageDialog(null, exc, "runProgram Error", > JOptionPane.ERROR_MESSAGE); > } > } > > i ok. Ale jest problem: tworzy sie plik .dwg (bo ten zewnetrzny program go > tworzy). Nastepnie musze znowu wywolac ta metode tylko tz innymi > parametrami > (inny program zrobi z tego .dwg pdfa). I tu jest walek bo pdf jest > uszkodzony > poniewaz nie zrobil sie jeszcze plik .dwg. Zauwazylem ze plik .dwg skonczy > sie > robic dopiero po skonczeniu calego programu. Zatem jak to pogodzic aby > drugie > wywolanie tej metody nastapilo dopiero po tym jak pierwsyze wywolanie > skonczy > robic plik?? Szukalem i probowalem na watkach, metody synchronized i nic. > Chyba ze zle robie bo super z javy nie jestem. > Skoro to program zewnetrzny to raczej go nie skontrolujesz sensownie (no chyba zeby "Process" trzymany na łapce pilnowac, ale nie wiem na ile to suteczny pomysł), chyba najsensowniejszym wyjsciem jest zapuscic timer ktory sprawdzi czy ".dwg" juz powstał i wtedy pojechac dalej. Jezeli twoja maszynka do robienia "dwg" jest javoska to sprawa jest prostsza - poprostu ją sobie podepnij i uzyj wprost - bez wywołań zewnetrznych.
kantor
the0ne@op.pl - 24-12-2006 00:42
> Skoro to program zewnetrzny to raczej go nie skontrolujesz sensownie (no > chyba zeby "Process" trzymany na łapce pilnowac, ale nie wiem na ile to > suteczny pomysł), chyba najsensowniejszym wyjsciem jest zapuscic timer ktory > sprawdzi czy ".dwg" juz powstał i wtedy pojechac dalej. > Jezeli twoja maszynka do robienia "dwg" jest javoska to sprawa jest > prostsza - poprostu ją sobie podepnij i uzyj wprost - bez wywołań > zewnetrznych. > > kantor > > Niestety sprawa nie jest prosta bo zarowno program do robienia plikow .dwg jak i .pdf nie sa w javie tylko normalne programy. Moze jest jakis sposob na zamkniecie runtime bez zamykania programu?? Oba programy sa uruchamiane poprzed linie komend (w Windows znane cmd). Moze jest jakis sposob aby sprawdzic czy to okienko dosa sie zamknelo lub cos takiego?? Juz sam nie wiem a potrzebuje tego bardzo.
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
the0ne@op.pl - 24-12-2006 00:42
Wreszcie mi sie udalo. Dla wszystkich ktorzy moga miec podobne problemy bardzo pomocny link: http://www.javaworld.com/javaworld/j...229-traps.html
Listing 4.7 jest odpowiedzia na wszystko i dziala :)
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Jacek Czerwinski - 24-12-2006 00:42
Dnia 13 Dec 2006 10:31:43 +0100, the0ne@op.pl napisał(a):
>> Skoro to program zewnetrzny to raczej go nie skontrolujesz sensownie (no >> chyba zeby "Process" trzymany na łapce pilnowac, ale nie wiem na ile to >> suteczny pomysł), chyba najsensowniejszym wyjsciem jest zapuscic timer ktory >> sprawdzi czy ".dwg" juz powstał i wtedy pojechac dalej. >> Jezeli twoja maszynka do robienia "dwg" jest javoska to sprawa jest >> prostsza - poprostu ją sobie podepnij i uzyj wprost - bez wywołań >> zewnetrznych. >> >> kantor >> >> > Niestety sprawa nie jest prosta bo zarowno program do robienia plikow .dwg jak > i .pdf nie sa w javie tylko normalne programy. Moze jest jakis sposob na > zamkniecie runtime bez zamykania programu?? Oba programy sa uruchamiane > poprzed linie komend (w Windows znane cmd). Moze jest jakis sposob aby > sprawdzic czy to okienko dosa sie zamknelo lub cos takiego?? Juz sam nie wiem > a potrzebuje tego bardzo.
zrobić BAT (w nim oba programy) i wywolac (chyba) "cmd.exe /c nazwa.bat"
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
oracle -> oracle lub oracle -> mysql replikacja - programy
[spam] sprzedam używane programy Adobe/Macromedia [spam sprzedam]
Prezentacja =?ISO-8859-2?Q?zdj=EA=E6_z_w=B3=B1czeniem/wy=B3a?==?ISO-8859-2?Q?czeniem_-_jaki_program_polecacie_do_tego_?=
Program do konwersji =?ISO-8859-2?Q?zdj=EA=E6_B=26W_-=3E_?==?ISO-8859-2?Q?kolor?=
SQL Server 2005: początkujący programista T-SQL ma problem
Program magazynowy - czy jest taki jakiego =?UTF-8?B?cG90cnplYnVq?==?UTF-8?B?xJk/?=
Import faktur do Insert Subiekt GT oraz Wapro Wf-Mag z innego programu
=?iso-8859-2?Q?program_foxpro_i_win_vista_=3F_w_xp_dzia=B3a=B 3o.?=
[Oracle] Czy znacie jakiś programik który wykonuje sie z lini poleceń do porównywania Schemy?
=?ISO-8859-2?Q?[MS_SQL]_=A6ledzenie_zapyta=F1_wykonywanych_przez_program? =
zanotowane.pldoc.pisz.plpdf.pisz.plabsolwenci.keep.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|