Italian [SOLVED] B4J dopo aggiornamento non funzionano più molti programmi compilati

Gnappo jr

Active Member
Licensed User
Longtime User
Ho deciso di aggiornare b4j, prudentemente ho testato su un pc di prova che le app precedenti girassero bene.
Di seguito ho aggiornato B4A e B4J anche sul PC di sviluppo. Alla fin fine ho cancellato la precedente installazione di B4A e B4J e l'ho rifatta da zero.

Viene il giorno che devo fare una piccola modifica ad un programma un pochino complesso che scambia dati con un webservice fatto con Visualstudio e con delle app androi b4a e con un server jetty fatto con b4j. In debug tutto funziona, a questo punto provo a preparare la release e generare un eseguibile windows e mi rendo conto che "l mondo è cambiato"
Provo a generare un package con la funzione di b4j, benissimo tutto bene, funziona! (amara illusione)!

Distibuito il nuovo pacchetto ecco le telefonate disperate, il programma segnala errori che NON SI MANIFESTANO IN DEBUG!
Le provo tutte ma non ne esco, per la prima volta in 60 anni suonati sono costretto a negarmi al telefono.
Ho fatto un programma di test sia b4a si b4j per mostrare quanto accade, ilpgm cripta una stringa e la decripta.
(la stringa viene critata e decriptata tra programmi eterogenei vb.net , asp, b4a, b4j quindi non posso modificare gli algoritmi)
il programma allegato (mi riferisco a b4j) funziona bene in debug mode ma il quello dato con il pacchetto di distribuzione da errori (sesso pc), come generare un pacchetto di distribuzione che funziona?

link ad un mio post sullo stesso argomento
Per comodità futura allego anche qui.
 

Attachments

  • testba.rar
    9 KB · Views: 54
  • Immagine 2023-03-29 081447.jpg
    Immagine 2023-03-29 081447.jpg
    32.9 KB · Views: 66
  • Immagine 2023-03-29 081644.jpg
    Immagine 2023-03-29 081644.jpg
    167.2 KB · Views: 52
Last edited:

Sagenut

Expert
Licensed User
Longtime User
Il problema è che non riesci a creare il compilato da distribuire, ho capito bene?
Da dopo Java 8 non si possono più fare i JAR eseguibili.
Se stai usando OPENJDK 11 o superiore devi utilizzare la funzione
build.jpg

Questa ti creerà una cartella BUILD all'interno della cartella del tuo progetto.
Devi distribuire TUTTA la cartella BUILD per intero, ed eseguire l'exe da dentro questa cartella (che ovviamente rinominerai come vuoi).
Svantaggio:
- Anche per un programma da 4 righe avrai un malloppo da almeno 40MB.
Vantaggio:
- Sarà eseguibile ovunque, su qualunque PC, senza dover fare installare al cliente nessuna versione di JAVA.
 
Last edited:

Gnappo jr

Active Member
Licensed User
Longtime User
Il problema è che non riesci a creare il compilato da distribuire, ho capito bene?
Da dopo Java 8 non si possono più fare i JAR eseguibili.
Se stai usando OPENJDK 11 o superiore devi utilizzare la funzione
View attachment 140716
Questa ti creerà una cartella BUILD all'interno della cartella del tuo progetto.
Devi distribuire TUTTA la cartella BUILD per intero, ed eseguire l'exe da dentro questa cartella (che ovviamente rinominerai come vuoi).
Svantaggio:
- Anche per un programma da 4 righe avrai un malloppo da almeno 40MB.
Vantaggio:
- Sarà eseguibile ovunque, su qualunque PC, senza dover fare installare al cliente nessuna versione di JAVA.
No, ho esattamente fatto quello che mi dici, creo la BUILD , ma quando avvio il programma dentro la build , si avvia ok però quando cllicco sul pulsante [Clicl] del programma, esso si chiude inaspettatamente con l'errore in figura, mentre in debug o in release da dentro B4J tutto funziona. Puoi provarlo anche Tu se vuoi con l'esempio allegato.
Le prove le ho fatte su un pc vergine con installata l'ultima versione di B4J, il problema si manifesta anche sullo stesso pc nel quale viene generata la BUILD
 

Sagenut

Expert
Licensed User
Longtime User
Se possibile puoi condividere le librerie
B4XEncryption
Encryption
che io non ho e non posso testare il tuo progetto?
 

micro

Well-Known Member
Licensed User
Longtime User
Salve ragazzi
presumo che B4XEncription lo utilizzavi anche prima vero?
Se è così sicuramente il package creato manca di alcune librerie e nel tuo caso di crypto
Vedi questo Link
Aveva lo stesso problema Ivano con il pacchetto creato, dovresti inserire delle direttive di compilazione tipo:
B4X:
#PackagerProperty: IncludedModules = javafx.web, jdk.charsets, jdk.crypto.ec, jdk.localedata
 

Sagenut

Expert
Licensed User
Longtime User
Salve ragazzi
presumo che B4XEncription lo utilizzavi anche prima vero?
Se è così sicuramente il package creato manca di alcune librerie e nel tuo caso di crypto
Vedi questo Link
Aveva lo stesso problema Ivano con il pacchetto creato, dovresti inserire delle direttive di compilazione tipo:
B4X:
#PackagerProperty: IncludedModules = javafx.web, jdk.charsets, jdk.crypto.ec, jdk.localedata
Ho fatto una prova al volo ma il problema non sembra essere quello.
Dà proprio che non esiste quel Algoritmo.
 

micro

Well-Known Member
Licensed User
Longtime User
Ho visto ora che utilizzi anche Encryption ma ti posso garantire che deve funzionare perchè ho un programma compilato con java11 ed utilizza sia B4XEncryption che JEncription con #AdditionalJar: bcprov-jdk15on-168, forse è la tua nuova versione che non lo fa funzionare perchè facendo mente locale ricordo di aver avuto anche io un problema del genere ma è passato del tempo e ricordo a fatica
 

Gnappo jr

Active Member
Licensed User
Longtime User
Ho fatto una prova al volo ma il problema non sembra essere quello.
Dà proprio che non esiste quel Algoritmo.
..... se non esiste l'algoritmo perchè da B4J funziona ma in BUILD no? ....... stesso pc
 
Last edited:

Sagenut

Expert
Licensed User
Longtime User
..... se non esiste l'algoritmo perchè da B4J funziona ma in BUILD no? ....... stesso pc
Infatti l'assurdità è quella.
In Debug funziona, in standalone no.
 

Gnappo jr

Active Member
Licensed User
Longtime User
Salve ragazzi
presumo che B4XEncription lo utilizzavi anche prima vero?
Se è così sicuramente il package creato manca di alcune librerie e nel tuo caso di crypto
Vedi questo Link
Aveva lo stesso problema Ivano con il pacchetto creato, dovresti inserire delle direttive di compilazione tipo:
B4X:
#PackagerProperty: IncludedModules = javafx.web, jdk.charsets, jdk.crypto.ec, jdk.localedata



#PackagerProperty: è un qualcosa che non conosco, ho provato varie combinazioni di quanto indicato ma il problema rimane: del B4J funziona e da BUILD no!
A questo punto sono costretto a fare il downgrade di B4J , spero di ritrovare la versoione a 32 bti in qualche backup.
Che sconforto ragazzi!
 

Sagenut

Expert
Licensed User
Longtime User

Sagenut

Expert
Licensed User
Longtime User
Come suggerito da @micro prova magari ad usare dei Jar di Bouncy Castle più vecchi per vedere se per caso si sistema.
 

Gnappo jr

Active Member
Licensed User
Longtime User
Ho la sensazione che il problema è insito in questa parte di codice del modulo main

Java:
#if java
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import java.security.Provider;
import java.security.Security;
static{
 Provider BC = new BouncyCastleProvider();
 Security.addProvider(BC);
}
#End If

difatti togliendolo ottengo lo stesso errore della build, quindi qualcosa legato a questo cidice non viene probabilmente riportato nella distribuzione
quelcuno saprebbe spiegarmi che fa questa parte di codice?
 

micro

Well-Known Member
Licensed User
Longtime User
Comunque deve funzionare, se hai 5 minuti da perdere fai così, io ho preferito ultimamente questa soluzione (è un exe creato con sbp e una libreria modificata Door da Agrham) perchè faccio prima ad aggiornare il tutto semplicemente sostituendo il jar
Creati la tua cartella di progetto compreso il jar compilato (con MergeLibraries:True), unzippa nella tua cartella i file all'interno dello zip allegato e rinomina il nome dell'eseguibile text.exe e degli argomenti test.args con il nome della tua applicazione, cioè del tuo jar.
Dovrebbero diventare myapp.exe e myapp.args.
Creati una variabile d'ambiente chiamata OpenJdkPath con il valore: percorso della tua cartella java11

1680110536211.png

nel mio caso è C:\java\jdk-11.0.1

A questo punto deve funzionare per forza, non vedo perchè non dovrebbe.

Sono convinto che il pacchetto creato dall'IDE non si porti tutto insieme

P.S.
Attenzione il mio antivirus considera l'exe creato con sbp un file infetto, se così fosse creati un'eccezione.
 

Attachments

  • Test.zip
    65.5 KB · Views: 60

Gnappo jr

Active Member
Licensed User
Longtime User
Comunque deve funzionare, se hai 5 minuti da perdere fai così, io ho preferito ultimamente questa soluzione (è un exe creato con sbp e una libreria modificata Door da Agrham) perchè faccio prima ad aggiornare il tutto semplicemente sostituendo il jar
Creati la tua cartella di progetto compreso il jar compilato (con MergeLibraries:True), unzippa nella tua cartella i file all'interno dello zip allegato e rinomina il nome dell'eseguibile text.exe e degli argomenti test.args con il nome della tua applicazione, cioè del tuo jar.
Dovrebbero diventare myapp.exe e myapp.args.
Creati una variabile d'ambiente chiamata OpenJdkPath con il valore: percorso della tua cartella java11

View attachment 140725
nel mio caso è C:\java\jdk-11.0.1

A questo punto deve funzionare per forza, non vedo perchè non dovrebbe.

Sono convinto che il pacchetto creato dall'IDE non si porti tutto insieme

P.S.
Attenzione il mio antivirus considera l'exe creato con sbp un file infetto, se così fosse creati un'eccezione.
lo proverò a breve
 

Gnappo jr

Active Member
Licensed User
Longtime User
In considerazione del fatto che il problema dipenda dalle linee java in main ho fatto qualche poccola modifica per toglierle
ed ecco in allegato il progetto modificato.
Succede che in b4a FUNZIONA
a.jpg

e in B4j mi da
java.security.InvalidKeyException: Wrong key size
se trovo la soluzione a questo forse la BUILD B4J funzionerà
 

Attachments

  • testba2.rar
    8.8 KB · Views: 48

Gnappo jr

Active Member
Licensed User
Longtime User
Ma questo sembra un problema diverso, da codice, nella schermata log errori a inizio thread non compariva

Certamente è un problema diverso ma sullo stesso programma ed è il coerente con il titolo del therad

B4J dopo aggiornamento non funzionano più molti programmi compilati​

ritengo che nel tempo possa essere utile ad altri,
Comunque è il problema di partenza, per appianarlo sono giunto alle modifiche che fanno funzionare il tutto tranne il programma distribuito.
Quindi riparto dall'inizio sperando che la soluzione sia più semplice da trovare rispetto a prima.
Ma è accettabile che un aggiornamento del sistema di sviluppo mi conduca a tale drammatica situazione.
Prima dell'aggiornamento funzionama tutto alla grande mannaggia.
Domani faccio un restore del backup del pc dello scorso anno e MAI IU' AGGIORNAMENTI
 
Last edited:
Top