何が起こっているのかわかりませんが、私が使用している最新の OSGI ライブラリには、サービス定義などのジェネリック情報があります。このライブラリに対してソース コードを記述すると、IDE はジェネリック情報を正しく解釈し、コードを記述できるようにします。
しかし、javacでコードをコンパイルしようとすると、「type ServiceFactory does not take parameters」というコンパイルエラーが発生します。このエラーは、Eclipse コンパイラーを使用すると発生しません (しかし、IDEA 11 の Eclipse コンパイラーは、「new HashMap<>()」のような新しい JDK 7 言語構造を好まないように見えるため、実際には代替として使用できません。 )。
この問題を初めて調査していたとき、OSGI バイナリ jar に問題があり、クラス ファイルが JDK 1.4 バイナリ互換性のためにコンパイルされており、それがコンパイラのロード時に保持されているジェネリック情報に干渉していたことをどこかで読みました。クラス。それが正しいかどうかは覚えていません。なぜなら、その Web ページを探しに行ったときに再び見つからないからです。
それで、ここでの取引は何ですか?OSGI アプリケーションでジェネリックを使用できるように、javac が OSGI 4.x クラスのジェネリック情報を参照できないのはなぜですか?