PDA

View Full Version : [Java] Creare un exe da codice java senza main


Night82
30-08-2006, 20:46
Di solito per creare un exe uso axe4j. Ora però mi trovo alle prese con del codice che non ha un main(). In particolare lavoro con Agenti Mobili (Jade) che non hanno un main ma come le applet, per esempio, partono senza main.

Infatti per esempio per lanciare un agente faccio:
java jade.Boot nome:agente

Come faccio a creare l'exe?

giova22
30-08-2006, 20:50
io creerei un file bat (se usi winzoz) e poi un exe che non fa altro che aprire il exe. O altrimenti un exe in C che fa partire il comando che hai specificato tu.

Night82
30-08-2006, 21:01
io creerei un file bat (se usi winzoz) e poi un exe che non fa altro che aprire il exe. O altrimenti un exe in C che fa partire il comando che hai specificato tu.
Il bat posso evitare che mi apra il prompt dei comandi dos?

giova22
30-08-2006, 21:44
Il bat posso evitare che mi apra il prompt dei comandi dos?

io farei così penso che vada

void main()
(aperta grafa)
system("java jade.Boot nome:agente");
(chiusa grafa)



Così dovrebbe andare

Night82
30-08-2006, 22:00
Sei sicuro che sia system(String)?

Se compilo mi dice che non trova quel comando.

Night82
06-09-2006, 15:56
Sei sicuro che sia system(String)?

Se compilo mi dice che non trova quel comando.
up

Night82
11-09-2006, 15:05
Come faccio un exe in C? Per ora ho scritto il file prova.c:
#include <windows.h>
#include <stdio.h>

int main()
{
System("java jade.Boot nome:agente");
}

andbin
11-09-2006, 15:19
Come faccio un exe in C? Per ora ho scritto il file prova.c:
#include <windows.h>
#include <stdio.h>

int main()
{
System("java jade.Boot nome:agente");
}Scusa la domanda: perché devi fare un programma "C" per avviare un programma Java? :confused:
(comunque come l'hai scritto è sbagliato)

Night82
11-09-2006, 15:26
Scusa la domanda: perché devi fare un programma "C" per avviare un programma Java? :confused:
(comunque come l'hai scritto è sbagliato)
Perché come scritto nel 1° post:
Di solito per creare un exe uso axe4j. Ora però mi trovo alle prese con del codice che non ha un main(). In particolare lavoro con Agenti Mobili (Jade) che non hanno un main. Per lanciarlo da prompt scrivo: "java jade.Boot nome:agente".

Quindi giova22 mi ha consigliato di fare un exe in C che lancia la stringa "java jade.Boot nome:agente".

PS Cmq Cosa sbaglio?

andbin
11-09-2006, 16:17
Perché come scritto nel 1° post:
Di solito per creare un exe uso axe4j. Ora però mi trovo alle prese con del codice che non ha un main(). In particolare lavoro con Agenti Mobili (Jade) che non hanno un main. Per lanciarlo da prompt scrivo: "java jade.Boot nome:agente".Ok ... ma allora non ti basta mettere un file .bat o meglio un collegamento (es. sul desktop) che lancia:
javaw jade.Boot nome:agente
???

PS Cmq Cosa sbaglio?Dovrebbe essere:
#include <stdlib.h>

int main(void)
{
system("java jade.Boot nome:agente");
return 0;
}

Night82
11-09-2006, 16:22
Ok ... ma allora non ti basta mettere un file .bat o meglio un collegamento (es. sul desktop) che lancia:
javaw jade.Boot nome:agente
???

Ok però così mi parte anche la shell del dos di windows. Io vorrei che non si vedesse. L'applicazione ha una sua interfaccia e vorrei che si vedesse solo quella!

PS Perché javaw e non java?

andbin
11-09-2006, 16:29
Ok però così mi parte anche la shell del dos di windows. Io vorrei che non si vedesse. L'applicazione ha una sua interfaccia e vorrei che si vedesse solo quella!Il programmino "C" che ho indicato è per una applicazione "console". Quindi la console ce l'hai comunque in mezzo ai piedi anche se lanci javaw. Dovresti fare una applicazione Win32 di tipo "GUI" (non console, per intenderci) e allora non avresti problemi.

PS Perché javaw e non java?javaw non apre la console. Quindi se metti un collegamento sul desktop che lancia javaw ... allora non hai la console in mezzo ai piedi. ;)

Night82
12-09-2006, 08:36
Il programmino "C" che ho indicato è per una applicazione "console". Quindi la console ce l'hai comunque in mezzo ai piedi anche se lanci javaw. Dovresti fare una applicazione Win32 di tipo "GUI" (non console, per intenderci) e allora non avresti problemi.

Scusa l'ignoranza ;), potresti spiegarti meglio? come faccio a fare un'applicazione GUI? la mia è già un JFrame (praticamente).

andbin
12-09-2006, 09:18
Scusa l'ignoranza ;), potresti spiegarti meglio? come faccio a fare un'applicazione GUI? la mia è già un JFrame (praticamente).Qui stiamo parlando della applicazione "C". Vuoi fare una applicazione "C" per Windows che sia in grado di avviare Java senza dover avere una console in mezzo ai piedi??? Ecco:
#define STRICT
#include <windows.h>

INT APIENTRY WinMain (HINSTANCE hInstance, HINSTANCE hPrevious, LPSTR lpszCmdLine, INT iCmdShow)
{
ShellExecute (NULL, "open", "javaw", "jade.Boot nome:agente", NULL, SW_SHOWNORMAL);
return 0;
}

Night82
12-09-2006, 09:28
Ok creo questo file, lo compilo e poi come posso fare l'exe dal file c (se è possibile)?

andbin
12-09-2006, 09:48
Ok creo questo file, lo compilo e poi come posso fare l'exe dal file c (se è possibile)?Dovresti specificare quale compilatore/ambiente di sviluppo usi. ;)

Night82
12-09-2006, 09:50
Dovresti specificare quale compilatore/ambiente di sviluppo usi. ;)
Non mastico molto C. Uso Windows Xp, come IDE CodeBlocks e compilatore gcc.

andbin
12-09-2006, 10:28
come IDE CodeBlocks e compilatore gcc.Code::Blocks non lo conosco, non so cosa possa fare o meno. Dovresti vedere un po' tu se ti permette di creare un nuovo progetto Win32 non di tipo console. Di più non saprei dire. :(

Night82
12-09-2006, 10:30
Code::Blocks non lo conosco, non so cosa possa fare o meno. Dovresti vedere un po' tu se ti permette di creare un nuovo progetto Win32 non di tipo console. Di più non saprei dire. :(
Altrimenti consigliami tu un ide free che lo faccia.. se esiste!

andbin
12-09-2006, 10:36
Altrimenti consigliami tu un ide free che lo faccia.. se esiste!Microsoft Visual C++ 2005 Express. Però devi installare anche il Platform SDK e fare qualche modifica ai file di configurazione del VC++.