Maison > Java > javaDidacticiel > Pourquoi getClass().getResource() échoue-t-il lors de l'exécution à partir de la ligne de commande ?

Pourquoi getClass().getResource() échoue-t-il lors de l'exécution à partir de la ligne de commande ?

DDD
Libérer: 2024-11-07 00:50:03
original
789 Les gens l'ont consulté

Why Does getClass().getResource() Fail When Running from the Command Line?

Chargement de fichiers par getClass().getResource()

La méthode getClass().getResource() peut être utilisée pour charger des fichiers de ressources . Lorsqu'elle est déployée à partir d'un environnement de développement tel qu'Eclipse, cette méthode fonctionne généralement de manière transparente. Cependant, l'exécution de l'application à partir de la ligne de commande peut parfois entraîner une exception de pointeur nul.

Ce problème survient car getClass().getResource() utilise le chargeur de classe pour récupérer la ressource. Pour être accessible, la ressource doit être incluse dans le chemin de classe. Lors de l'utilisation d'Eclipse, le dossier source et tous ses composants, y compris les fichiers de ressources, sont placés par défaut dans le chemin de classe. Par conséquent, les ressources peuvent être chargées à partir du même package ou répertoire que la classe.

En revanche, lors de l'exécution à partir de la ligne de commande, le chemin de classe n'est pas automatiquement configuré. Le fichier ou le répertoire contenant la ressource doit être explicitement ajouté au chemin de classe. Une méthode pour y parvenir consiste à définir la variable d'environnement CLASSPATH sur le chemin du fichier ou du répertoire.

Il est crucial de noter que l'utilisation directe de FileInputStream comme indiqué dans le code n'est pas recommandée pour le chargement des ressources. Utilisez plutôt getResourceAsStream() pour obtenir un InputStream. Cela garantit la compatibilité lors du déploiement sous forme de fichier JAR ou du chargement de classes sur un réseau.

De plus, la méthode getResource() vous permet de spécifier l'emplacement d'une ressource par rapport au package de classes. Par exemple :

Foo.class.getResourceAsStream("Test.properties")
Copier après la connexion

Charge Test.properties à partir du même package que Foo.

Foo.class.getResourceAsStream("/com/foo/bar/Test.properties")
Copier après la connexion

Charge Test.properties à partir du package com.foo.bar.

En respectant ces directives, vous pouvez charger avec succès des fichiers de ressources à l'aide de getClass().getResource() lors de l'exécution de votre application à partir de la ligne de commande.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal