2009-03-19 6 views
2

このParserFactory.java"org.w3c.css.sac.parser"システムプロパティを設定するには?私は、EclipseでJavaアプリケーションとして、この<a href="http://www.w3.org/TR/SAC/DemoSAC.java" rel="nofollow noreferrer">DemoSAC.java</a>ファイルを実行すると

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

では、私は、まさに "org.w3c.css.sac.parser" プロパティで何

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

を得ましたか。 Windowsではどのように設定しますか?どうすればいい?

ありがとうございます!

答えて

2

コードを変更したくない場合は、EclipseのJava起動設定ダイアログでJavaプロパティを設定することもできます。 [引数]タブで[VMオプション]を指定します。 javamonkey79のようにプロパティを「org.w3c.flute.parser.Parser」に設定するには、次のように指定します。

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

1

インターフェイスの実装を提供する必要があるようです。このリンクhereごとに、これはそれを行うための一つの方法である:

  • フルートパーサhere
  • は(getPropertyメソッド呼び出しの前に)DemoSACクラスにこれを追加するには、ビルド・パスに追加します:

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

それはそもそも、この反射ベースのインスタンス化をやっているなぜ私はおそらくParserFactoryをバイパスし、フルートパーサの新しいインスタンスを返すことは完全にきれいになり、知らないのですか?