2012-01-24 4 views
0

私は解決できないという問題があります。 私は春分の変換について学んだし、私はこのトラブルを解決することはできません、私のアクティベーターで、私は、コードのこの部分に置く:エクイキュックスはアクチベータを変換します

Properties properties = new Properties(); 
properties.put("equinox.transformerType", "xslt"); //$NON-NLS-1$ //$NON-NLS-2$ 
registration = context.registerService(URL.class.getName(), context.getBundle().getEntry("/transform.csv"), properties); //$NON-NLS-1$ 

をしかし、EclipseはregisterServiceメソッドはそのパラメータで使用することはできませんと言われます(String、Url、Properties)、それは(String、Url、Dictionary)のみを受け入れます。 Equinox_Transformsの例は、私が使用しているのと同じ方法を使用しますが、その場合は機能します。

問題が何ですか?

私はこれで私のアクティベーターにサンプルコードを変更します。

Dictionary properties = new Hashtable(); 
properties.put("equinox.transformerType", "xslt"); 
registration = context.registerService(URL.class.getName(), context.getBundle().getEntry("/transform.csv"), properties); 

はそれが正しいですか?

答えて

0

Propertiesオブジェクトを使用したとき、import文は何ですか? java.util.Properties(java.util.Dictionaryのサブクラス)を使用していないようです。プロパティと呼ばれるクラスがかなりあります。

+0

私はjava.util.Propertiesを使用しています –

+0

うーん...私はコンテキストオブジェクトがBundleContextであると仮定していましたか? – katsharp

+0

はい。はい。私がやったのは、ちょっとした事例のコードをすべてActivatorにコピーすることでした。面白いことに、この例では実行時にエラーが表示されますが、前には表示されません。 –

2

BundleContext型のregisterService(String、Object、Dictionary)が引数(String、URL、Properties)に適用されないというEclipseからのコンパイルエラーは正しいです。 これはjavaのジェネリックのためです。 java.util.PropertiesクラスはHashtableを拡張します。これはジェネリックルールに従います。 は今、あなたは、明らかにそれが辞書< .Stringとして第3引数を期待していると述べられている

ServiceRegistration<?> registerService(String clazz, Object service, Dictionary<String, ?> properties); 

BundleContext.reregisterServiceによって期待される引数を()を参照してくださいか?>。

したがって、単純なプロパティを使用している場合、この第3引数のコンパイル時に型を識別できません。

だから、あなた第2のアプローチは正しいです:

Dictionary properties = new Hashtable(); 
properties.put("equinox.transformerType", "xslt"); 
registration = context.registerService(URL.class.getName(),  
context.getBundle().getEntry("/transform.csv"), properties); 

あなたはそれを再度コンパイル時に同じエラーあなたを与えるだろうでも

Dictionary<Object,Object> properties = new Hashtable(); 

への辞書の参照を変更することでこれを確認することができます。

genericsの詳細については、hereをご覧ください。

Equinox Transformとサンプル例はEquinox Transform revealedで詳しく読むことができます。

+0

小さな疑問 – Arun

関連する問題