10
votes

Comment corriger un programme Java?

Récemment, j'ai appliqué une solution à une application de bureau Java. Je l'ai fait en changeant le code dans l'une de mes classes, l'a compilée et envoyé le nouveau pot à l'environnement de production.

On me demande maintenant s'il est possible de corriger le pot en production en copiant la classe compilée que j'ai réparé, ou même créer un programme / script de correction qui sera en mesure de mettre à jour les fichiers modifiés.

Info supplémentaire:

  1. Le patch ne doit pas nécessairement être appliqué au moment de l'exécution. Ce qui signifie que le correctif peut être effectué en tant que programme ou activité distinct. Mon ancien programme n'a pas besoin de mettre à jour automatiquement.
  2. peut-il être fait avec des applications Web (fichier de guerre) aussi?

    La meilleure réponse que je suis arrivée est la suivante: mais il a 2 ans. Patching Java Logiciel

    est mon exigence rare? Je n'ai jamais vu de tutoriel pour corriger une application Java.


1 commentaires

Cette question semble être hors sujets car il s'agit de l'infrastructure - mieux adaptée aux programmeurs ou peut-être serveurfault


4 Réponses :


4
votes

Vous pouvez mettre à jour le vieux pot en faisant JAR UF JARFILE Classfile (s)

Cela remplacera les fichiers de classes anciens avec le même nom avec de nouveaux, faisant un patch d'automobile à l'aide de celui qui ne doit pas être dur


1 commentaires

Merci pour votre réponse, vous avez simplement choisi Stephen Réponse car il a également ajouté des informations supplémentaires.



2
votes

Pour déployer des applications de bureau Java., la meilleure option est généralement d'installer l'application. Utilisation de Java Web Démarrer . JWS fonctionne sur Windows, OS X & * Nix. Il inclut la mise à jour automatique.

peut-il être fait avec des applications Web (fichier de guerre) aussi?

non. JWS est pour les applications de bureau. seulement.


1 commentaires

Merci pour votre réponse. Nous pourrions essayer cela sur les futures applications de bureau



7
votes

On me demande maintenant s'il est possible de corriger le pot en production en copiant la classe compilée que j'ai réparé, ou même créer un programme / script de correction qui sera en mesure de mettre à jour les fichiers modifiés.

oui. Il est possible de corriger un fichier JAR en utilisant jar -u . Il est également possible de corriger un fichier de guerre de la même manière.

Mais je ne le recommanderais pas. Le bocal ou le fichier de guerre devrait être l'unité de déploiement / gestion. Si vous commencez à corriger les fichiers JAR / WAR sur les serveurs de production, il est difficile de suivre ce qui est réellement utilisé là où. Si vous ne faites pas attention, le chaos et la confusion vont régner.

La seule situation où le patch est inévitable est l'endroit où vous avez une bibliothèque tiers ou quelque chose que vous ne pouvez pas construire à partir de la source, mais vous devez modifier néanmoins. Mais même dans ce cas, il est préférable de modifier le bocal / guerre sur votre plate-forme de construction et déployer le bocal / guerre modifié. Essayer de corriger des pots, des guerres ou des webapps déployés sur la plate-forme de production est une mauvaise idée.


est mon exigence rare?

Oui. Il y a une meilleure façon ...

Je n'ai jamais vu de tutoriel pour corriger une application Java.

Pas surprenant, étant donné qu'il y a une meilleure façon ...


4 commentaires

Merci pour votre réponse. Comme je l'ai dit dans le redéploiement, le bocal / guerre testé est ce que je fais normalement. C'était un mandat de notre service de sécurité et de notre service standard et je suis heureux que je n'étais pas le seul à trouver cette exigence comme étrange.


@Jefreyvalencia - Je serais tenté de repousser de "Fournir des pots correctés et correctement testés". Je serais également curieux de savoir ce qu'ils vous exigent de faire des correctifs. Tout semble un peu bizarre .. ,.


Bonjour à nouveau Stephen, plus ou moins l'équipe de sécurité et de standard essaye simplement de surveiller les modifications que nous faisons à l'application déjà en production. L'un de leur exemple (simplifié / reformé) est que si un bogue existe dans le système d'exploitation Windows, vous pouvez simplement la corriger plutôt que de réinstaller l'application. Cet argument a du sens mais dans mon expérience limitée, je ne savais pas si c'était possible ou même bonne pratique pour une application Java.


Je vois. Alors, que font-ils lorsque vous déployez une nouvelle version à votre système de production? Et que font-ils avec ces correctifs (binaires) qu'ils veulent que vous fournissez? Les décompiler? Cela me semble que certains types de gestion de l'équipe S & S ont créé un "processus" sans tenir compte de savoir si cela réalise quelque chose.



0
votes

Jetez un coup d'œil à Geverdown - qui vise à fournir un système de téléchargement et Installation d'une collection de fichiers sur la machine d'un utilisateur et mettez à niveau ces fichiers selon vos besoins.


0 commentaires