Paramètre système Java provoquant NoClassDefFoundError

J’ai une classe qui prend différents parameters du système et les imprime:

public class Test_Class { public static void main(Ssortingng[] args){ Ssortingng fooA = System.getProperty("fooA"); Ssortingng fooB = System.getProperty("fooB"); Ssortingng fooC = System.getProperty("fooC"); System.out.println("System Properties:\n"+fooA+"\n"+foob+"\n"+fooC+"\n"); } } 

Ensuite, en utilisant IntelliJ, transmettez les parameters de la machine virtuelle en tant que tels:

 -DfooA="SsortingngA" -DfooB="SsortingngB" -DfooC="Ssortingng C" 

En exécutant mon programme, j’obtiens la sortie suivante:

 System Properties: SsortingngA SsortingngB Ssortingng C 

Maintenant, si je lance le même programme via un serveur UNIX en exécutant la commande suivante:

 java -DfooA="SsortingngA" -DfooB="SsortingngB" -DfooC="Ssortingng C" com.foo.fooUtil.Test_Class 

Je reçois l’erreur suivante:

 Exception in thread "main" java.lang.NoClassDefFoundError: C 

J’ai essayé un tas de différentes manières de passer à fooC , comme -DfooC=\"Ssortingng C\" , -DfooC='Ssortingng C' , -DfooC=\'Ssortingng C\' , en gros toute idée qui m’est venue à l’esprit . J’ai fait des recherches et je n’ai pas pu trouver de solution solide.

Pour référence, j’ai trouvé le lien suivant en ligne où une autre personne semble avoir le même problème mais, malheureusement, aucune des suggestions ne fonctionne.

http://www.unix.com/shell-programming-scripting/157761-issue-spaces-java-command-line-options.html

Comment puis-je passer un paramètre système avec des espaces sous UNIX? Je vous remercie.

Voici mon approche: Pourquoi ne pas utiliser un fichier .properties pour stocker les propriétés du système au lieu de les transmettre via la ligne de commande? Vous pouvez accéder aux propriétés en utilisant:

 Properties properties = new Properties(); try { properties.load(new FileInputStream("path/filename")); } catch (IOException e) { ... } 

Et vous pouvez itérer comme:

 for(Ssortingng key : properties.ssortingngPropertyNames()) { Ssortingng value = properties.getProperty(key); System.out.println(key + " => " + value); } 

J’espère que cela pourra aider!!!