Ce qui se passe pour “le Système de..println()” dans exécutable jar?
Supposons que j'ai créé un executable jar
à partir d'un code où j'ai utilisé
System.out.println()
Lorsque nous exécutez le fichier exécutable jar, il n'y a pas de console. Donc, ce qui arrive à cette ligne? Comment java
gérer cette situation?
EDITION 01:
NOTE: La situation est quand je n'ai pas utiliser une console pour exécuter le jar
ni associer n'importe quelle console avec elle de toute façon.
EDIT 02: Rendre les choses plus claires:
Je sais que rien ne sera imprimé n'importe où, il n'y a pas de console..! Je veux savoir comment java
gérer cette ligne dans ce cas? Est-ce la ligne omis lors de la génération du bytecode pour un exécutable jar? Ou est-ce juste négligé quand il n'y a pas de console? Ou quoi que ce soit...
java -jar foo.jar
à partir d'une console, il est...Je veux dire fonctionnant pas à l'aide de la console...
Alors, il vaut la peine de faire ta question plus claire. Vous avez déclaré qu'il n'y a pas de console, quand c'est seulement parfois true.
Si vous exécutez le programme pas à l'aide de la console, alors vous ne verrez pas le Système..impression du contenu. Il pense que quelque chose principalement utilisé pour les tests et le débogage. Lorsque vous accédez à un programme de production, cela ne devrait pas être utilisé.
Si vous voulez vraiment utiliser le Système..print (), vous pouvez effectuer une redirection de la console dans un fichier: stackoverflow.com/questions/2851234/...
OriginalL'auteur Minar Mahmud | 2015-02-12
Vous devez vous connecter pour publier un commentaire.
Il n'y a rien de spécial au sujet de l'exécution de code dans un fichier jar exécutable. Si vous l'exécutez à partir d'une console, par exemple avec
java -jar foo.jar
à la sortie de toujours aller à la console.Si vous exécutez le code, d'une certaine façon qui n'attache pas une console comme
javaw
sur Windows, qui est le programme par défaut associée avec l'exécutable des fichiers jar - alors que la sortie ne sera pas aller n'importe où. Il ne sera pas causer des erreurs - le texte sera perdu.Noter que dans ce cas, si vous utilisez
System.console()
au lieu de cela, que sera de retournull
. Donc:println()
méthode est écrit que si il n'y a pas de console, l'appel sera simplement ignoré?Bien pas ignoré - je suppose que si vous utilisez
printf
et ont une certaine chaîne de format non valide, qui ne manquera pas, par exemple. Mais la sortie ne sera pas aller n'importe où.OriginalL'auteur Jon Skeet
La sortie est omis, aussi longtemps que vous n'avez pas exécuter votre application à partir d'une fenêtre de console (
java -jar executable.jar
). En outre, vous pouvez configurer votre installation de Java, tels qu'une console de windows est lancé dès que vous démarrez une application Java. La sortie sera écrit à la JVM de la fenêtre de la console alors. Vous pouvez trouver un article Comment puis-je activer et afficher la Console Java? sur le site web de Java.OriginalL'auteur user1438038
Je vous l'ouvrir à partir de la console (java-jar YourJar.jar le texte est imprimé dans votre fenêtre de console.
Si vous l'ouvrir dans l'explorateur (ou similaires), vous ne verrez pas le texte
À clarifier votre deuxième Edit:
Le bytecode n'est pas omis, parce que le compilateur ne peut pas savoir dans quel contexte le pot va être exécuté. Le pot peut toujours être appelé à partir de la console, dans ce cas, la println a à y rester.
En fait, de nombreux Fichiers jar ne sert strictement à rien sinon. Il ya beaucoup de programmes Java qui interagissent avec l'utilisateur par la console d'entrée et de sortie.
Il est pas nécessaire pour java-Programme pour avoir une interface graphique (ou à exécuter complètement en arrière-plan).
J'ai édité ma réponse, peut-être que cela vous aidera
OriginalL'auteur DiscoStu