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" ?
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.
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 !!!
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
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
"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
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
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.