2009-03-19 26 views
2

Dans ce ParserFactory.javaComment définir la propriété système "org.w3c.css.sac.parser"?

String className = System.getProperty("org.w3c.css.sac.parser"); 
if (className == null) { 
    throw new NullPointerException("No value for sac.parser property"); //line 35 
} else { 
    return (Parser)(Class.forName(className).newInstance()); 
} 

Quand je lance ce fichier DemoSAC.java comme application Java dans Eclipse, je suis

Exception in thread "main" java.lang.NullPointerException: No value for sac.parser property 
at org.w3c.css.sac.helpers.ParserFactory.makeParser(ParserFactory.java:35) 

Quelle est exactement la propriété "org.w3c.css.sac.parser"? Comment puis-je le définir sous Windows? Que dois-je définir?

Merci!

Répondre

2

Si vous ne souhaitez pas modifier le code, vous pouvez également définir une propriété Java dans la boîte de dialogue de configuration de lancement Java d'Eclipse. Vous spécifiez une "option VM" dans l'onglet "Arguments". Pour définir la propriété sur "org.w3c.flute.parser.Parser" comme suggéré par javamonkey79, vous devez spécifier:

-Dorg.w3c.css.sac.parser = org.w3c.flute.parser.Parser

1

Il semble que vous ayez besoin de fournir une implémentation d'interface. Par ce lien here, c'est une façon de le faire:

  • obtenir l'analyseur de flûte here
  • ajouter à votre chemin de génération
  • ajouter à la classe DemoSAC (avant l'appel getProperty):

    System.setProperty ("org.w3c.css.sac.parser", "org.w3c.flute.parser.Parser");

Je ne sais pas pourquoi il fait cette réflexion sur la base instanciation pour commencer, peut-être passer par ParserFactory et retourner une nouvelle instance de l'analyseur de la flûte serait plus propre tout à fait?

Questions connexes