2017-03-07 8 views
0

私は解決できないような問題のあるXtextプロジェクトを持っています。次のコードを考えてみましょう:IResourceSetProviderを使用したNullPointerException?

@Inject 
IResourceSetProvider resourceSetProvider; 

private void function(){ 
    IProject project = file.getProject(); 

    URI uri = URI.createPlatformResourceURI(file.getFullPath().toString(), true); 
    ResourceSet resourceSet = resourceSetProvider.get(project); 
    Resource resource = resourceSet.getResource(uri, true); 
} 

オブジェクト「ファイル」のIFileは、この関数の引数として渡されると、私はその内容にアクセスしても、文字列としてそれらをプリントアウトすることができていて、nullではないが、例えばれます。私はまた、そのIProjectフィールドにアクセスして、その上で操作を実行することもできます。しかし、私は、ResourceSet行、つまり ".get(project)"関数でNullPointerExceptionを取得しています。プロジェクトが間違いなくnullでない場合、このステップでNullPointerExceptionが発生する原因は何ですか?

ありがとうございました!

+0

私はあなたが縮小囲みのクラス、輸入などを提供する必要があると思う。 – efekctive

+0

お詫び申し上げます...助けていただきありがとうございますが、私はこれを修正するように見えません。あなたはresourceSetProviderについてnullだったので、何かがインジェクションで失敗しています... 私が示したこのコードブロックは、関連するならば、クラス内にあります。 –

+0

さて、私は注射を一切取り除き、IResourceSetProviderを手作業でインスタンス化することで解決しました。 'IResourceSetProvider rs1 = IResourceServiceProvider.Registry.INSTANCE.getResourceServiceProvider(uri).get(IResourceSetProvider.class); ' –

答えて

0

プロジェクトがヌルであるか、注入が失敗し、プロバイダがnullです。変数プロジェクトはnullではないと言っています。その後、注射は失敗した。

+0

申し訳ありません...私がフォローしているかわかりません。どのように注射が失敗することができますか? –

+0

あなたが指定したコードがあれば、これらはこの行の唯一のオプションです。 osgiコンテナがスキャン/注入段階の間に注入可能な – efekctive

+1

@ sentient_6としてあなたのクラスを認識しない場合、注入は失敗します。注射で囲むタイプのインスタンスを作成することが重要です。 – Alex

関連する問題