web-dev-qa-db-fra.com

L'exécution de Java avec la variable env Java_OPTS n'a aucun effet

Dans un script Shell, j'ai défini la variable d'environnement Java_OPTS (pour activer le débogage à distance et augmenter la mémoire), puis j'exécute le fichier jar comme suit:

export Java_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=n -Xms512m -Xmx512m"
Java -jar analyse.jar $*

Mais il semble qu'il n'y ait aucun effet de la variable env Java_OPTS car je ne peux pas me connecter au débogage à distance et je ne vois aucun changement de mémoire pour la JVM.

Quel pourrait être le problème?

PS: je ne peux pas utiliser ces paramètres dans le Java -jar analyse.jar $* commande car je traite les arguments de ligne de commande dans l'application.

48

Je ne connais aucune JVM qui vérifie réellement le Java_OPTS variable d'environnement. Habituellement, cela est utilisé dans les scripts qui lancent la JVM et ils l'ajoutent généralement à la ligne de commande Java.

La chose clé à comprendre ici est que les arguments à Java qui viennent avant le -jar analyse.jar bit n'affectera que la JVM et ne sera pas transmis à votre programme. Ainsi, en modifiant la ligne Java dans votre script pour:

Java $Java_OPTS -jar analyse.jar $*

Devrait "juste fonctionner".

49
ZoogieZork

Vous pouvez configurer _Java_OPTIONS au lieu de Java_OPTS. Cela devrait fonctionner sans $_Java_OPTIONS.

84
HEX