NoSuchMethodError using svnkit to add a file to my repository
I'm trying to 开发者_开发百科add a file to my repository using svnkit but I get a NoSuchMethodError referencing this line of code:
SVNDiffWindow diffWindow = SVNDiffWindowBuilder.createReplacementDiffWindow(deltaLength);
Here's the stack trace:
java.lang.NoSuchMethodError: org.tmatesoft.svn.core.io.diff.SVNDiffInstruction.<init>(IJJ)V
at org.tmatesoft.svn.core.io.diff.SVNDiffWindowBuilder.createReplacementDiffWindow(SVNDiffWindowBuilder.java:529)
at adc.ui.util.SvnTest.testSvnCommit(SvnTest.java:109)
And here's all the code:
File file = new File( "c:/development/photolib/discounts/svnTesting/testThisTextCommit1.txt" );
try {
DAVRepositoryFactory.setup();
String url = "https://subversion.access.dev/svn/sticks/media/trunk/Discounts/PhotoLib/svnTesting";
SVNRepository repository = SVNRepositoryFactory.create(SVNURL.parseURIDecoded(url));
ISVNEditor editor = repository.getCommitEditor("This is a log message.", new CommitMediator());
editor.openRoot(-1);
editor.addFile("testThisTextCommit1.txt", null, -1);
editor.applyTextDelta("testThisTextCommit1.txt", null);
long deltaLength = file.length();
SVNDiffWindow diffWindow = SVNDiffWindowBuilder.createReplacementDiffWindow(deltaLength);
OutputStream os = editor.textDeltaChunk("testThisTextCommit1.txt", diffWindow);
os.close();
editor.textDeltaEnd("testThisTextCommit1.txt");
editor.closeFile("testThisTextCommit1.txt", null);
editor.closeEdit();
}
Could it be that I'm using an out of date version? This is the dependency I'm using:
<pluginRepository>
<id>org.tmatesoft.svnkit</id>
<name>tmatesoft.svnkit svnkit Repository</name>
<url>http://maven.svnkit.com/maven2/</url>
</pluginRepository>
SVNDiffWindowBuilder is no longer in use. The following code should be used in its place:
String chksm = deltaGenerator.sendDelta(path, xontentsStream, editor, true); editor.closeFile(path, chksm);
Working code:
SVNRepository repository = SVNRepositoryFactory.create(SVNURL.parseURIDecoded(svnUrl));
SVNDeltaGenerator deltaGenerator = new SVNDeltaGenerator();
ISVNEditor editor = repository.getCommitEditor("This is a log message.", new CommitMediator());
editor.openRoot(-1);
editor.addFile("testThisTextCommit1.txt", null, -1);
editor.applyTextDelta(svnUrl, null);
InputStream is = SVNFileUtil.openFileForReading(file);
String chksm = deltaGenerator.sendDelta(svnUrl, is, editor, true);
is.close();
editor.textDeltaEnd("testThisTextCommit1.txt");
editor.closeFile("testThisTextCommit1.txt", chksm);
editor.closeEdit();
精彩评论