J'ai un programme de serveur exécutant un code binaire Java (fichier xx.jar). Bien que cela fonctionne, je supprimez à tort le fichier xx.jar. Le programme continue de fonctionner. Mais je ne sais pas si les résultats seront corrects, et je ne suis pas sûr que le programme échouera. P>
Lorsque je supprime le fichier xx.jar, le programme était dans une méthode pendant une longue période et il est toujours dans cet appel de méthode. Lorsqu'il appelle une autre méthode, mon programme échoue? P>
Je pose cette question car si la suppression du fichier n'a aucun mal, je gagne environ 3-4h sur une machine serveur p>
3 Réponses :
Il n'y a aucune garantie que la JVM chargera toutes les classes à partir d'un fichier Si cela échoue, et j'imagine que cela serait à un moment donné, cela ne se produirait pas au milieu de l'exécution d'une méthode. Il serait à un point où une nouvelle classe doit être chargée à partir du path de classe et de la JVM ne peut plus accéder à ce fichier. Ensuite, vous échoueriez avec Donc, non, je ne vous conseillerais certainement pas de le faire, même si cela arrive à travailler dans certains cas. P> .jar code> en mémoire, bien qu'il puisse pré-charger tout ou partie du
.jar code> comme une optimisation. P>
NOCLASSDEFFTROR CODE> ou Pire. P>
Le programme actuel est toujours exécuté la même méthode lorsque j'ai supprimé le fichier xx.jar. Je mets exactement le même fichier xx.jar dans le dossier que j'ai supprimé xx.jar. Cette solution empêche-t-elle une défaillance lorsque le programme quitte la méthode exécutant et appeler une autre méthode ou une autre classe?
Mon programme a appelé une nouvelle classe maintenant et n'a pas entraîné une erreur. Thnx beaucoup
Selon votre système d'exploitation, cela ne sera pas un problème. Sur Linux, par exemple, un fichier n'est pas vraiment supprimé tant que toutes les applications qui l'ont ouverte le fermer. Le fichier sera parti de la liste des répertoires, mais il existe toujours et peut être lu (et même écrit!) Par n'importe quelle application avec un descripteur de fichier valide ouvert. P>
Si le JVM conserve ou non des descripteurs de fichiers ouverts à tous les fichiers JAR de votre application, je ne sais pas. Je ne fierais pas à ce sujet le faire, même si cela semble fonctionner correctement. P>
Dieu merci, j'utilise Linux. ------ >> Une autre question que j'ai posée auparavant - >> Le programme actuel de l'actualisation exécute toujours la même méthode lorsque j'ai supprimé le fichier xx.jar. Je mets exactement le même fichier xx.jar dans le dossier que j'ai supprimé xx.jar. Cette solution empêche-t-elle une défaillance lorsque le programme quitte la méthode exécutant et appeler une autre méthode ou une autre classe? - Ogzylz il y a 3 secs Modifier [Supprimer ce commentaire]
Mon programme a appelé une nouvelle classe maintenant et n'a pas entraîné une erreur. Thnx beaucoup
Vous allez savoir quand vous déployez et redéployez complètement une application et redémarrez-le. P>
La fonctionnalité de dépendance échouera et l'expection sera lancée p>
Nope il a continué de travailler bien. Mais avant qu'il n'appelle autre classe / méthode, j'ai copié un autre xx.jar déployé comme le xx.jar supprimé.