Cet article a été vérifié pour fonctionner dans l'environnement suivant.
C:\>java -version
openjdk version "11.0.3" 2019-04-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.3+7)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.3+7, mixed mode)
Le fichier Main.java
suivant lit le queen.properties
qui existe sur le chemin de classe, puis formate et affiche le contenu.
Main.java
import java.io.IOException;
import java.util.Properties;
public class Main {
public static void main(String[] args) {
try (var in = Main.class.getClassLoader().getResourceAsStream("queen.properties")) {
var properties = new Properties();
properties.load(in);
for (var key : properties.stringPropertyNames()) {
var value = properties.getProperty(key);
var message = String.format("key=`%s` value=`%s`", key, value);
System.out.println(message);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Le contenu de «queen.properties» est le suivant.
queen.properties
queen.vocal = Freddie Mercury
queen.guitar = Brian May
queen.bass = John Deacon
queen.drum = Roger Taylor
Eh bien, j'ai compilé Main.java
avec javac
, généré Main.class
et l'ai exécuté comme suit, mais une erreur s'est produite et il ne s'est pas comporté comme prévu.
C:\>java -cp properties\queen.properties; Main
Exception in thread "main" java.lang.NullPointerException: inStream parameter is null
at java.base/java.util.Objects.requireNonNull(Objects.java:246)
at java.base/java.util.Properties.load(Properties.java:403)
at Main.main(Main.java:8)
__ Dans ce cas, l'intention était d'ajouter le queen.properties
stocké dans le répertoire properties
au chemin de classe. Par conséquent, j'ai spécifié properties \ queen.properties
dans l'option -cp
qui spécifie le chemin de classe, mais il semble que cela ne fonctionne pas bien. __
Sauf lors de l'utilisation de jokers (*
), il semble que la méthode de spécification du chemin de classe soit à peu près la suivante.
--Spécifiez le nom de fichier pour le fichier jar et le fichier zip. --Autre que cela, spécifiez le nom du répertoire.
Cette demande était de spécifier le fichier de propriétés comme chemin de classe. Par conséquent, cette dernière est la bonne réponse pour spécifier le chemin de classe. Ainsi, lorsque j'ai spécifié le nom du répertoire au lieu du nom du fichier dans l'option -cp
, le comportement était comme prévu.
C:\>java -cp properties; Main
key=`queen.guitar` value=`Brian May`
key=`queen.drum` value=`Roger Taylor`
key=`queen.vocal` value=`Freddie Mercury`
key=`queen.bass` value=`John Deacon`
"Définir le chemin d'accès aux classes"
Recommended Posts