French Erreur pendant la compile

FB78

Member
Licensed User
Longtime User
Bonjour,

J'ai une erreur qui se produit lors de la compilation de mon appli !!! (voir la P.J.)
et je ne sais pas comment corriger cette erreur : à quoi correspond "l'initialisation de VM" ?

Merci de votre aide
 

Attachments

  • Erreur compilation.jpg
    Erreur compilation.jpg
    28.5 KB · Views: 112

Quandalle

Member
Licensed User
B4X génère du code java qui est lui-même compiler par le compilateur java pour génèrer du Bytecode.
Le Bytecode est ensuite exécuté par un programme qui s'appelle la machine virtuel java (VM ou JVM). (La machine Virtuelle java se lance par la ligne de commande "java xxx.jar")
L'erreur actuelle est que la machine virtuelle java ne peut pas s'initialiser car il n'y a pas assez de mémoire.
Peut-être votre programme utilise des tableaux de grand tailles qui dépassent les capacités de la mémoire....ou quelque chose du même type.
 

FB78

Member
Licensed User
Longtime User
Mon appli n'utilise pas de tableaux, elle se compilait bien avant que je modifie les chemins des bibliothèques, j'ai restauré celles-ci sans succès, peut-être en ai-je oublié une quelques part !!!
 

Quandalle

Member
Licensed User
l'erreur est que le heap (tas d'objets) ne peut être réservé au lacement de la machine :
- soit il y a trop d'objets (tableaux, ou autres structures.....) dans le programme
- soit il n'y a pas assez de mémoire sur la machine (peut-être par exemple d'autres applications mobilisent toute la mémoire)

Dans tous les cas vous pouvez essayer de forcer une heap size plus grand au lacement de la machine virtuelle java avec les paramètres -Xms et -Xmx
par exemple : java -Xms2G -Xmx5G xxxx.jar
va tenter d'allouer un heap size au minimum de 2Go et au maximum de 5Go

Lors qu'on est dans l'environnement intégrer il faut utiliser la directive #VirtualMachineArgs: en haut du code.
Par exemple avec "#VirtualMachineArgs: -Xms1024m -Xmx2048m" B4X va essayer de lancer une JVM avec un heap size mini de 1Go et maxi de 2Go
 

FB78

Member
Licensed User
Longtime User
Merci Quandalle de m'aider,
Dans tous les cas vous pouvez essayer de forcer une heap size plus grand au lacement de la machine virtuelle java avec les paramètres -Xms et -Xmx
par exemple : java -Xms2G -Xmx5G xxxx.jar
ou dois-je mettre cette commande et "xxxx" c'est quoi ?
 

Quandalle

Member
Licensed User
"xxxx.jar" c'est le nom du votre programme java généré
SI votre projet s'appelle test.b4j le programme java généré s'appellera test.jar et il est situé dans le sous-répertoire objects.
Pour lancer se programme en ligne de commande il faut donc taper : "java test.jar" ou alors "java -Xms2G -Xmx3G test.jar" si on veut forcer des tailles de heap
 

FB78

Member
Licensed User
Longtime User
toujours la même erreur !!!!
pour la commande "java test.jar" ou "java -Xms2G -Xmx3G test.jar", ça ne marche pas car B4A ne génère pas le fichier "AlarmeFB.jar" à cause de l'erreur (avant c'était AlarmeFB.apk qui se trouvait dans le sous-répertoire Objects).
dans le sous-répertoire objects, je n'ai que AndroidManifest.xml et ObfuscatorMap.txt
 

FB78

Member
Licensed User
Longtime User
BENZAÏ !!!!
j'ai enfin réussi à compiler sans erreur après avoir :
1) désinstallé toutes les versions Java
2) réinstallé la version Java 8
3) réassigné les chemins "C:\Program Files\Java\jdk1.8.0_102\bin\javac.exe" et "C:\Program Files (x86)\Android\SDK\platforms\android-8\android.jar"

Merci beaucoup Quandalle pour ton aide et ta patience.
 
Top