2010-01-06 13 views
38

Dans un script shell, j'ai 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:java Exécution avec JAVA_OPTS variable env

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

Mais semble qu'il n'y a aucun effet de la variable d'environnement 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 la commande java -jar analyse.jar $* parce que je traite les arguments de ligne de commande dans l'application.

Répondre

39

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

L'essentiel de comprendre ici est que les arguments à java qui viennent avant le bit -jar analyse.jar n'affectera que la machine virtuelle Java et ne sera pas être passé le long de votre programme. Ainsi, la modification de la ligne java dans votre script:

java $JAVA_OPTS -jar analyse.jar $* 

devrait "juste".

+0

Voir la réponse de HEX. C'est ainsi que vous définissez les options à l'aide d'une variable d'environnement sur OS X. – BitwiseMan

72

Vous pouvez configurer _JAVA_OPTIONS au lieu de JAVA_OPTS. Cela devrait fonctionner sans $_JAVA_OPTIONS.

+6

_Ceci_est la vraie réponse. Je suis allé chercher pendant des heures pour trouver cela. – BitwiseMan

+0

J'ai essayé ceci sur Windows XP. Ne fonctionne pas .. :( – Nerrve

+3

@Nerrve Spécial pour vous installé Windows XP Fonctionne très bien Êtes-vous sûr de tout fait correctement – HEX