Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 添加文件时发生JGIInternalException_Java_Git_Jgit - Fatal编程技术网

Java 添加文件时发生JGIInternalException

Java 添加文件时发生JGIInternalException,java,git,jgit,Java,Git,Jgit,我刚开始尝试使用JGit,但现在在做最基本的事情时遇到了一个奇怪的异常 我的代码: public class JGitTest { public static void main(String[] args) throws Exception { File worktree = new File( "C:\\Users\\nils\\Desktop\\tmp\\gittest\\jgittest"); File repodi

我刚开始尝试使用JGit,但现在在做最基本的事情时遇到了一个奇怪的异常

我的代码:

public class JGitTest {
    public static void main(String[] args) throws Exception {
        File worktree = new File(
                "C:\\Users\\nils\\Desktop\\tmp\\gittest\\jgittest");
        File repodir = new File(worktree, ".git");

        Repository repository = FileRepositoryBuilder.create(repodir);

        Git git = new Git(repository);
        git.add().addFilepattern(".").call();
    }
}
执行此代码段时,我遇到以下异常:

线程“main”org.eclipse.jgit.api.errors.JGitInternalException中的异常:执行add命令时捕获的异常
位于org.eclipse.jgit.api.AddCommand.call(AddCommand.java:212)
位于de.njo.test.JGitTest.main(JGitTest.java:18)
导致原因:java.io.IOException:Das系统无法正常运行
位于java.io.WinNTFileSystem.CreateFileExclusive(本机方法)
位于java.io.File.createTempFile(未知源)
位于org.eclipse.jgit.internal.storage.file.ObjectDirectoryInserter.newTempFile(ObjectDirectoryInserter.java:233)
位于org.eclipse.jgit.internal.storage.file.ObjectDirectoryInserter.toTemp(ObjectDirectoryInserter.java:199)
位于org.eclipse.jgit.internal.storage.file.ObjectDirectoryInserter.insert(ObjectDirectoryInserter.java:91)
位于org.eclipse.jgit.internal.storage.file.ObjectDirectoryInserter.insert(ObjectDirectoryInserter.java:102)
位于org.eclipse.jgit.api.AddCommand.call(AddCommand.java:188)
... 还有一个
在JavaEE服务器上运行此代码段时,我遇到了一个非常类似的异常。我的错在哪里

编辑:更多信息:

  • 创建的存储库完全为空(没有目录:hooks、HEAD或 (什么都可以)
  • 我使用的是jgitv3.7.0.201502260915-r

出现
JGitInternalException
的原因是指定位置没有存储库

尽管名称不同,
FileRepositoryBuilder.create()
并不创建(即
git init
)存储库。
FileRepositoryBuilder
只能用于为现有git存储库创建
Repository
(在JGit中表示存储库的类)的实例。阅读

要初始化新存储库,请使用

Git git = Git.init().setDirectory( "c:\users\..." ).call();

使用完存储库后,不要忘了
git.close()
存储库。

您打算在
C:\Users\nils\Desktop\tmp\gittest\jgittest
中创建一个存储库(即
git init
),还是该目录已经包含一个存储库?尽管名称为,
FileRepositoryBuilder.create()
并不创建存储库。要初始化存储库,请使用
Git.init().setDirectory(“c:\users\…”).call()
。是的,我想做一个“Git init”。。。我会试试你的建议。它确实管用,但让我很困惑。。。根据这个网站:,FileRepositoryBuilder.create(repodir)是一个新存储库的方法…这里听起来也是这样:第一个链接中的说明是错误的。jgit cookbook代码段使用
repository.create()FileRepositoryBuilder.create()
返回的存储库上的code>,它实际初始化存储库。
FileRepositoryBuilder
仅用于为现有git存储库创建
存储库的实例。阅读虽然cookbook方法可能有效,但使用JGit初始化存储库的指定方法是通过上面建议的
InitCommand