Парные JAR и двоичные файлы собственных библиотек для SVN-привязок Java (JavaHL) в Windows?
Я пишу некоторый код, который использует привязки Java Subversion (SVN) напрямую (JavaHL) (где JavaHL включает нативные библиотеки и тонкую оболочку Java). В Linux (Ubuntu 12.04) это не проблема: пакет libsvn-java
устанавливает нативные библиотеки и \usr\share\java\svn-javahl.jar
так что я просто ссылаюсь на последнее, и я уезжаю.
В Windows я не знаю такой чистой упаковки пары (JAR + нативные библиотеки) вместе. Я знал, что SlikSVN содержит реализацию JavaHL, но установка, которая, кажется, только для установки собственных библиотек (которые он помещает в PATH). Есть что-нибудь, что дает чистый пакет из двух? (Если SlikSVN упаковывает JAR-файл, я не нахожу его нигде, и поиск по всему диску ничего не находит...)
В качестве обходного пути я создал файл JAR вручную (подробности ниже, которые могут быть полезны для людей). Но кажется, что "совпадение" Java-оболочки и нативных библиотек очень точное: когда я построил JAR из более позднего исходного кода SVN (вместо того, чтобы сопоставить мою точную версию SlikSVN SVN) в качестве теста, я получил фатальные ошибки в нативном код (EXCEPTION_ACCESS_VIOLATION). Возможно, мне не повезло, но, если он довольно чувствительный, мне нужно будет предоставить библиотеку JAR для каждой потенциальной версии SlikSVN (и, следовательно, SVN), которую пользователи могут установить (или ограничить свой выбор SlikSVN, или иметь некоторые склонные к ошибка процесса автоматической сборки, которая потребует их установки JDK). Все плохие варианты:-(
Обходной путь вручную (плохо!)
У меня был SlikSVN 1.8.10: svn --version
версия отчетов 1.8.10-SlikSvn-1.8.10-X64
,
Итак, я получил исходный код Java-оболочки из теговой версии SVN. (Вы также можете получить его из загрузок с основного сайта.)
svn export http://svn.apache.org/repos/asf/subversion/tags/1.8.10/subversion/bindings/javahl/src
Компилирование этого (нет никаких зависимостей) в JAR, и использование этого прекрасно работало с собственными библиотеками SlikSVN.
PS Я знаю, что мог бы использовать SVNKit, чтобы избежать необходимости делать это, но я делаю это именно так, чтобы не полагаться на SVNKit по причинам лицензирования (плюс API JavaHL в любом случае хорош и достаточно высокоуровнев, и есть другие причины предпочитать использовать "официальную" нативную реализацию JavaHL).
1 ответ
Двоичные файлы WANdisco должны содержать JavaHL.
http://www.wandisco.com/subversion/download
Прошло некоторое время с тех пор, как я использовал их сам (обычно не использую Windows). Но в WANdisco есть инструменты, которые зависят от JavaHL, поэтому я не могу представить, что в двоичных файлах Windows отсутствует JavaHL.
[Автор вопроса редактировать, чтобы завершить детализацию]
Вам необходимо установить (Windows) клиент Subversion (не SmartSVN) и убедиться, что вы отметили флажок, чтобы добавить его в Windows PATH
, Это хранит "спаренный" JAR в каталоге установки (вместе с собственными библиотеками). Однако WANDisco предоставляет только 32-битную установку (см. Этот пост на форуме), поэтому это не будет работать на 64-битной Windows. Кроме того, JAR включает только версии API Apache, которые были добавлены для Subversion 1.7. Если вы используете наследие org.tigris.subversion.javahl
Пакет API для совместимости с SVN-клиентами до 1.7, вам все равно нужно собрать JAR вручную.