Java 添加文件时发生JGIInternalException
我刚开始尝试使用JGit,但现在在做最基本的事情时遇到了一个奇怪的异常 我的代码: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
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
。