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]

代码示例如下。我验证了存储库路径和一切似乎都是正确的。如果我在 fetch 调用上放置一个断点,然后在 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

以下是其背后的基本原理: Loading a ResourceBundle inside an OSGi bundle

于 2014-06-28T00:47:11.657 回答