NoSuchMethodError с помощью svnkit для добавления файла в мой репозиторий - PullRequest
0 голосов
/ 13 августа 2011

Я пытаюсь добавить файл в свой репозиторий с помощью svnkit, но я получаю NoSuchMethodError, ссылающийся на эту строку кода:

SVNDiffWindow diffWindow = SVNDiffWindowBuilder.createReplacementDiffWindow(deltaLength);

Вот трассировка стека:

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)

И вот весь код:

        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();
    } 

Может быть, я использую устаревшую версию?Это зависимость, которую я использую:

<pluginRepository>
  <id>org.tmatesoft.svnkit</id>
  <name>tmatesoft.svnkit svnkit Repository</name>
  <url>http://maven.svnkit.com/maven2/</url>
</pluginRepository>

1 Ответ

0 голосов
/ 16 августа 2011

SVNDiffWindowBuilder больше не используется.Вместо него следует использовать следующий код:

String chksm = deltaGenerator.sendDelta(path, xontentsStream, editor, true); editor.closeFile(path, chksm);

Рабочий код:

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();
...