Cet article vous présente principalement les informations pertinentes sur la façon dont Java utilise les classes fournies par jdk. L'article le présente en détail à travers un exemple de code. Il a une certaine valeur d'apprentissage de référence pour les études ou le travail de chacun. j'en ai besoin Apprenons avec l'éditeur ci-dessous.
Préface
Lorsque nous avons analysé le principe d'analyse de Tomcat catalina.bat auparavant, nous avons constaté qu'il y avait un paramètre -Djava.endorsed.dirs
dans le paramètres de démarrage de Tomcat
Comme indiqué ci-dessous :
-Djava.endorsed.dirs
Java fournit une technologie approuvée :
A propos d'endossé : Il peut être simplement compris comme un fichier jar placé dans le répertoire spécifié par -Djava.endorsed.dirs
, qui aura pour fonction de couvrir l'API du système. Cependant, les classes pouvant être couvertes sont limitées, ce qui n'inclut pas les classes du package java.lang (pour des raisons de sécurité).
Pourquoi faut-il utiliser endossé pour remplacer les classes dans jdk ?
Parce que Java utilise le mécanisme de délégation parent pour charger les classes. Les classes fournies par jdk ne peuvent être chargées que par le chargeur de classes Bootstrap. Si vous souhaitez remplacer une certaine classe dans jdk dans votre application, il est impossible de le faire, donc Java fournit une approbation pour atteindre la classe que vous souhaitez remplacer dans le système.
Exemple
Modifiez la méthode java.util.ArrayList
dans la classe get(int index)
et ajoutez les informations sur la valeur de sortie obtenues dans la méthode, si la La chaîne est affichée directement, sinon, les informations de classe sont affichées et le chargeur de classe de la classe d'élément est chargé. Le code est le suivant :
Ensuite, emballez le fichier jar et placez-le dans un répertoire.
Je l'ai mis ici dans le répertoire "D:endorsed"
classe de test
public class Bootstrap { public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(10); for(int i=0;i<10; i++){ list.add("test"+i); list.get(i); } } }
à exécuter Quand en ajoutant le paramètre -Djava.endorsed.dirs=D:endorsed
. Comme indiqué ci-dessous :
Résultats en cours
À partir des résultats, nous avons constaté que les informations imprimées ne sont pas notre programme Ce qui est sorti est ce qui est imprimé dans la méthode ArrayList.get()
.
approuvé Une autre méthode de modification
Selon la description officielle du document : Si vous ne souhaitez pas ajouter le paramètre -D, si nous voulons le baser sur ce JDK. Si tous sont modifiés uniformément, alors nous pouvons mettre nos pots modifiés dans :
$JAVA_HOME/jre/lib/endorsed
De cette façon, toutes les ArrayLists basées sur ce JDK ont changé ! ! !
Résumé
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!