我正在编写一些直接使用 Subversion (SVN) Java 绑定 (JavaHL) 的代码(其中 JavaHL 包含本机库和瘦 Java 包装器)。在 Linux (Ubuntu 12.04) 上这没问题:packagelibsvn-java
安装本机库和\usr\share\java\svn-javahl.jar
,所以我只引用后者然后我就走了。
在 Windows 上,我知道这对(JAR + 本机库)没有这样干净的包装在一起。我知道 SlikSVN 包含一个 JavaHL 实现,但安装它似乎只是安装本机库(它确实放在 PATH 上)。有什么东西可以让两者干净利落?(如果 SlikSVN确实打包了 JAR,它在我期望的地方,并且搜索整个驱动器什么也没找到......)
作为一种解决方法,我手动构建了 JAR 文件(下面的详细信息可能对人们有用)。但似乎 Java 包装器和本机库的“匹配”非常精确:当我从更高版本的 SVN 源代码(而不是匹配我的确切 SlikSVN SVN 版本的那个)构建一个 JAR 作为测试时,我在本机中遇到了致命错误代码(EXCEPTION_ACCESS_VIOLATION)。也许我不走运,但是,如果它非常敏感,我将需要为用户可能安装(或限制他们的 SlikSVN 选择,或有一些倾向-错误的自动构建过程需要他们安装 JDK)。所有不好的选择:-(
我有 SlikSVN 1.8.10:svn --version
报告版本1.8.10-SlikSvn-1.8.10-X64
。
所以我从标记的 SVN 版本中获得了 Java 包装器源代码。(您也可以从 主站点的源下载中获取。)
svn export http://svn.apache.org/repos/asf/subversion/tags/1.8.10/subversion/bindings/javahl/src
Run Code Online (Sandbox Code Playgroud)
将此(没有依赖项)编译成 JAR,并使用它,与 SlikSVN 本机库一起工作得很好。
PS 我知道我可以使用 SVNKit 来避免这样做,但我这样做正是为了不依赖 …
那个问题讨论了通过java -verbose:class选项获取运行时使用的所有类的列表.
我感兴趣的是自动构建包含我的类的JAR文件,以及它们依赖的所有其他类.通常,这将是我使用来自某些第三方开源产品的"客户端逻辑"的代码,但他们没有提供一组干净的客户端API对象.他们的完整代码集在服务器端,但我只需要必要的客户端位.
这似乎是一个常见的问题,但我没有看到任何东西(例如在Eclipse中)有助于此.我错过了什么吗?
当然我仍然可以通过以下方式手动完成:咬住子弹并将所有第三方代码包含在一个巨大的JAR中(冒犯我的纯粹主义情绪)/源代码演练/试验和错误/ -verbose:类型类型的东西(但后者不会例如,我的代码作为J2EE servlet的一部分运行,因此我只希望在给定的Tomcat webapp中看到这个,并且理想情况下,仅针对与我的类相关的类.