Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pozivanje C programa (i eventualno skupljanje outputa)

[es] :: Java :: Pozivanje C programa (i eventualno skupljanje outputa)

[ Pregleda: 2729 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Dachaz
Darko Zelić
Amsterdam

Član broj: 1948
Poruke: 510

Jabber: dachaz@dachaz.net
Sajt: www.dachaz.net


+2 Profil

icon Pozivanje C programa (i eventualno skupljanje outputa)30.06.2006. u 16:28 - pre 216 meseci
Treba za faks da napravim GUI za neki C program, pa mi delovaše logično da uradim to sa Swing-om jer je lep i lak.
Interfejs ne treba ništa preterano da bude pametan, samo da poziva standalone konzolski program i prosledi mu argumente (na osnovu popunjenog "formulara"); a bilo bi savršeno ako bi još i skupljao output tog programa.

Dakle, da li je (i kako) moguće pokrenuti već kompajlirani program i proslediti mu argumente?
Plus, da li je (i kako) moguće skupljati output tog programa?

Nije mi bitno da bude cross-platform, bitno mi je samo da radi na jednom konkretnom računaru u ponedeljak
Koliko sam Guglao, sve se svodilo na "prepisivanje C koda u Javu" što mi se baš i ne radi...
iThink, therefore iMac.
 
Odgovor na temu

antix

Član broj: 8388
Poruke: 265
*.maksnet.net.

Jabber: antix@elitesecurity.org


Profil

icon Re: Pozivanje C programa (i eventualno skupljanje outputa)30.06.2006. u 18:10 - pre 216 meseci
koristiš

Code:

Runtime rt = Runtime.getRuntime();
Process p = rt.exec('path_to_executable');


dalje je lako



 
Odgovor na temu

Dachaz
Darko Zelić
Amsterdam

Član broj: 1948
Poruke: 510

Jabber: dachaz@dachaz.net
Sajt: www.dachaz.net


+2 Profil

icon Re: Pozivanje C programa (i eventualno skupljanje outputa)01.07.2006. u 11:20 - pre 216 meseci
Puno hvala za ovo, mnogo mi je pomoglo u daljem Guglanju :)

No, sad pred sam kraj me davi jedna glupost:
Naime, kada u ActionListener try-catch bloku kažem
Code:

String params[] = {"streamripper", tf_Putanja.getText(), "-d", tf_Destdir.getText()};
program = rt.exec(params);

Program se lepo pokrene sa argumentima kako valja, dok kad mu kažem:
Code:

int prmcnt = 0;

String params[] = new String[40];

params[prmcnt++] = "streamripper";
params[prmcnt++] = tf_Putanja.getText();
                                 
params[prmcnt++] = "-d";
params[prmcnt++] = tf_Destdir.getText();

program = rt.exec(params);

On kaže:
Code:

java.lang.NullPointerException
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:441)
    at java.lang.Runtime.exec(Runtime.java:591)
    at java.lang.Runtime.exec(Runtime.java:464)
    at C_interface.Prozor1$1.actionPerformed(Prozor1.java:267)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
    at java.awt.Component.processMouseEvent(Component.java:5488)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
    at java.awt.Component.processEvent(Component.java:5253)
    at java.awt.Container.processEvent(Container.java:1966)
    at java.awt.Component.dispatchEventImpl(Component.java:3955)
    at java.awt.Container.dispatchEventImpl(Container.java:2024)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
    at java.awt.Container.dispatchEventImpl(Container.java:2010)
    at java.awt.Window.dispatchEventImpl(Window.java:1774)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)


Pri čemu je C_interface.Prozor1$1.actionPerformed(Prozor1.java:267) red u kome je "program = rt.exec(params);".

Pretpostavio sam da to može da bude zato što mu je niz parametara veći nego broj zaista unetih parametara, pa sam bio smanjivao niz na 4 (za test-slučaj) i opet isti error...

iThink, therefore iMac.
 
Odgovor na temu

Dachaz
Darko Zelić
Amsterdam

Član broj: 1948
Poruke: 510

Jabber: dachaz@dachaz.net
Sajt: www.dachaz.net


+2 Profil

icon Re: Pozivanje C programa (i eventualno skupljanje outputa)01.07.2006. u 17:04 - pre 216 meseci
Moja pretpostavka da nešto nije u redu sa onim nizom bejaše na mestu, pa sam stavio
Code:

for (int i=0; i<params.length; i++)
     params[i] = " ";

i sad sve šljaka...
iThink, therefore iMac.
 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
212.200.219.*



+13 Profil

icon Re: Pozivanje C programa (i eventualno skupljanje outputa)02.07.2006. u 00:24 - pre 216 meseci
Pa da, nisi inicijalizovao niz...

Da je, na primer, bio niz boolean-a, po defaultu bi bili inicijalizovani na false.
 
Odgovor na temu

[es] :: Java :: Pozivanje C programa (i eventualno skupljanje outputa)

[ Pregleda: 2729 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.