2

JUnitテストで次のコードを実行して、gitリポジトリのフェッチをテストしています。JGitに必要な基本機能のそれぞれについてテストを作成しているので、アプリケーションにそれらを実装できます。問題は、以下のgit.fetch()呼び出しで次のエラーが発生し続けることです。

Loading of translation bundle failed for [org.eclipse.jgit.JGitText, en_US]
org.eclipse.jgit.errors.TranslationBundleLoadingException: Loading of translation bundle failed for [org.eclipse.jgit.JGitText, en_US]

コードサンプルは以下のとおりです。リポジトリパスとすべてが正しいように見えることを確認しました。フェッチ呼び出しにブレークポイントを設定してから、MSysGitで同じコマンドを実行すると、機能します。

  try {
         String remoteName = "origin";
         URIish uri = new URIish(repository.getRepositoryDirectory());
         saveRemote(repository2.getRepository(), uri, remoteName);
         Git git = repository.getGit();
         FetchResult r = git.fetch().setRemote(remoteName).call();
         assertNotNull("Did not get any result from fetch.", r);
      } catch (JGitInternalException ex) {
         fail("Failed to do fetch. " + ex.getMessage());
      } catch (InvalidRemoteException ex) {
         fail("Failed to do fetch. " + ex.getMessage());
      } catch (URISyntaxException ex) {
         fail("Failed to do fetch. " + ex.getMessage());
      }

ありがとう!

4

2 に答える 2

2

さて、私はこれを理解しました。ファイルJGitText.propertiesをバイナリディストリビューションからソースコードの同じパッケージにコピーし、名前をJGitText_en_US.propertiesに変更し、JGitText.javaで使用されていたが、そうではなかった一連のプロパティを手動で追加する必要がありました。 JGitText.propertiesで定義されています。

ソースコード全体とすべてのバイナリファイルおよび関連ドキュメントを検索しましたが、これらの新しいプロパティへの参照、またはどこかに作成されているプロパティファイルは見つかりませんでした。開発者がソースコードにローカリゼーションファイルを持っていない理由、または少なくともビルドファイルなどを介して生成する方法がわからない。つまり、ソースコードに手動で追加する必要があり、コミットしないでください。

とにかく、これは非常に厄介な問題でした。ネット上のどこにもドキュメントがありませんでした(とにかくグーグルが明らかにしました)ので、同じ問題に遭遇した他の人を助けるかもしれないので、これを共有したいと思いました。

于 2011-01-29T12:10:54.390 に答える
0

私は同じ問題を抱えていましたが、私の修正は少し異なっていました。私の場合、問題はOSGIクラスローダーに関連していました。

この問題を修正するコミットは次のとおりです: https ://github.com/diffplug/jgit/commit/3bcc69bde5567ec57ccd6bd065ded0db49f810fb

そして、その背後にある理論的根拠は次のとおりです 。OSGiバンドル内にResourceBundleをロードする

于 2014-06-28T00:47:11.657 に答える