Italian [B4J] Errore installazione runtime java

MARCO C.

Active Member
Licensed User
Buongiorno a tutti,
sto cercando di eseguire un programma creato con B4J su una vecchia macchina server.

Tramite l'utility launch4j-3.12-win32 ho trasformato un file jar in formato exe, questo per poter eseguirlo senza B4J.
Lanciando il file exe mi segnala ovviamente che il file richiede l'installazione del runtime Java.
A questo punto tramite il link in automatico ho effettuato il download da questa pagina

L'installazione non va a buon fine perchè mi viene segnalato questo errore

java#1.png

Come posso reperire questo certificato/firma digitale o superare questa segnalazione ?
Grazie in anticipo

La server è il seguente
java#2.png
 

Star-Dust

Expert
Licensed User
Longtime User
Perchè non usi il Package che c'è già in B4J ?
 

MARCO C.

Active Member
Licensed User
Aiuto... non ne ne conosco l'esistenza!
Mi crea un exe e non necessita di installare altro ?
Grazie
 

MARCO C.

Active Member
Licensed User
[QUOTE = "Star-Dust, post: 797490, membro: 101440"]
Perchè non usi il Pacchetto che c'è già in B4J?
[/CITAZIONE]
Sono andato nel menu Progetto -> Crea Package Standalone
Mi ha chiesto di installare la versione java 11+
Fatto anche quello.
Ho riprovato e mi ha generato una cartella Build

1612608662279.png


Devo distribuire tutta la cartella e lanciare il file exe? (nel mio caso Test.exe)


Grazie
M.
 

MARCO C.

Active Member
Licensed User
Negativo .. da quando ho cambiato il percorso alla versione 11 .. non funzione più exe creato con l'utility launch .
Ho dovuto reinserire jdk1.8.0_231

1612609850896.png
 

udg

Expert
Licensed User
Longtime User
Parti da qui.
In sostanza, le alternative sono:
- installi una copia di JRE sulla macchina che dovrà eseguire i tuoi jar. (Se usi la versione 1.8.x basterà il doppio click sul jar)
- utilizzi il "vecchio" Packager per produrre un file exe che conterrà il tuo jar+JRE
- utilizzi il nuovo Packager (passando quindi alla 1.11) ma niente più doppio-click

Personalmente l'idea di avere tante copie di JRE quanti sono gli exe non mi esalta, anche se così ogni jar sarà accoppiato alla versione di JRE con cui è stato sviluppato.."uniti finché crash non vi separi"..ehehe
 

Star-Dust

Expert
Licensed User
Longtime User
Si scusa non ero davanti al pc. Ma @udg ti ha dato spiegazioni dettagliate.
 

Sagenut

Expert
Licensed User
Longtime User
Con Java 11 e successivi devi distribuire tutta la cartella.
Il JAR funzionerà usando i file di quella cartella senza bisogno di installare JAVA 11 sulla macchina.
Credo, ma non ho provato, che sia possibile aggiungere altri file JAR di altre app, che potresti creare e voler utilizzare sempre su quella macchina, nella stessa cartella per poter utilizzare gli stessi file di JAVA 11 senza dover avere molte cartelle tutte uguali.
 

amorosik

Expert
Licensed User
Mi sono letto tutto il 3d, ma mica ho capito come hai risolto
Potresti ricapitolare come fare per avere un exe unico per Windows che comprenda jar e runtime java?
 

Nicola Ciaramellano

Member
Licensed User
Longtime User
Mi sono letto tutto il 3d, ma mica ho capito come hai risolto
Potresti ricapitolare come fare per avere un exe unico per Windows che comprenda jar e runtime java?
Ciao,
una volta usata l'opzione Crea Package Standalone ti verrà creata una cartella che si chiama build e si trova dentro objects/temp della tua app.
Questa cartella, copiata semplicemente nel computer che deve eseguire l'applicazione funziona così com'è semplicemente eseguendo l'exe perchè si porta dietro tutto il runtime e le librerie di java. Se vuoi vedere anche i log dell'applicazione per il debug, devi eseguire il file run_debug.bat al posto dell'exe che non visualizza i log.
Puoi usare Innosetup per distribuire la tua app utilizzando un template che viene generato atumaticamente sempre nella dir build e si chiama InstallerScript-Template.iss
Personalizzando quello che ti serve nel file .iss, dopo aver installato inno setup, potrai creare un eseguibile solo (setup.exe) che installa direttamente la tua applicazione nel pc target.
Però non puoi fare un solo file eseguibile, il setup, una volta lanciato nel pc dove va installata l'app, ri-crea sempre lo stesso albero della directory che è quello dentro build per intenderci e, come dice giustamente @udg effettivamente è un pò seccante avere sempre il runtime replicato per ogni app.
Volendo però, se devi fare un upgrade della applicazione, in seguito non è necessario ridistribuire sempre tutto, ma solo il file modules che si trova dentro lib.
Per alcune app che uso, ho fatto una procedura automatica che legge su un mio server ftp se esiste l'aggiornamento e si scarica solo il file modules aggiornato senza distribuire nulla (anche se modules alla fine è il file più grande dell'app).
 
Top