2

在这个ParserFactory.java

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());
}

当我在 Eclipse 中将此DemoSAC.java文件作为 Java 应用程序运行时,我得到了

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

“org.w3c.css.sac.parser”属性到底是什么?Windows下如何设置?我应该把它设置成什么?

谢谢!

4

2 回答 2

2

如果您不想修改代码,也可以在 Eclipse 的 Java 启动配置对话框中设置 Java 属性。您在“参数”选项卡中指定“VM 选项”。要按照 javamonkey79 的建议将该属性设置为“org.w3c.flute.parser.Parser”,您可以指定:

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

于 2009-03-20T19:39:35.040 回答
1

看起来您需要提供一个接口实现。根据此处的链接,这是一种方法:

  • 在这里获取长笛解析器
  • 将其添加到您的构建路径
  • 将此添加到 DemoSAC 类(在 getProperty 调用之前):

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

我不知道为什么它首先要进行这种基于反射的实例化,也许绕过 ParserFactory 并返回长笛解析器的新实例会更干净?

于 2009-03-19T06:35:30.137 回答