mac 下javaHL的解决 no svnjavahl in java.library.path

来源:互联网 发布:sql生成序号 编辑:程序博客网 时间:2024/05/22 06:15

JavaHL是什么?

JavaHL是Subversion项目的一部分。具体而言,它是为Subversion的API在Java语言绑定。Subversion提供了一种分层的本地库(DLL)提供的API设计。Subversion命令行仅仅是一个消费者的这个API。API是丰富的功能,但也保持向后兼容。这就是为什么有这么多伟大的Subversion客户端和可用的工具,因为有一个丰富和稳定的API,它提供了所有你需要的功能。

Subversion是用C写的,提供优秀的跨平台的支持,但也因为C生产从几乎任何其他的语言,很容易消耗的图书馆。Subversion项目提供并维护语言为Java,Perl,Python和Ruby的绑定。后三种是通过SWIG库和界面语言与本地库的能力。JavaHL是一个“高层次”的API,并提供自定义编写的C + +代码作为JNI的Java代码和本机库之间的桥梁。这样的设计让我们到Subversion提供了一个很好的Java API。

JavaHL基本上由四部分组成:

  1. 一个比较薄的层提供的API,消费者可以与从Java的Java代码。
  2. A C + +库(了JavaHL库或libsvnjavahl的-1)。Java层会谈到这一层使用Java本地接口(JNI)调用。C + +层是“高级别”API来实现。例如,Java提供了一个简单的API,说:“提交此文件列表,使用此提交的信息”。C + +层负责内存管理和执行所有较低级别的Subversion的API调用来完成请求。
  3. Subversion库。这是同一个库中的命令行客户端安装和使用。此外,其他的Subversion客户端,,如TortoiseSVN的或AnkhSVN的也将使用这些相同的库。
  4. Subversion库的依赖关系。Subversion需要一些外部库来操作。最大的是Apache可移植运行库(APR),但它也需要像霓虹灯的HTTP客户端和OpenSSL库来处理加密等。

所有这些层的需要JavaHL工作,并在应用程序中使用。

 

为什么Subclipse的需要JavaHL吗?

Subclipse的是用Java编写的,所以它需要能够使用Subversion的API使用了JavaHL库。Subclipse的Java层的JavaHL。如果你看一下以前的条目,你会看到,JavaHL需要3层的实际工作(主要是原生库)。

 

为什么不Subclipse的使用JavaHL我需要的一切吗?

在Windows中,我们会提供你需要的一切。由于技术原因,我们不能做到这一点,任何其他操作系统。它必须在不同的操作系统如何加载本地库。有没有办法提供所有的原生层的方式使用时,会发现从Java和Eclipse的图书馆。他们被发现的唯一方法是,如果他们正确地安装在这些操作系统寻找图书馆的具体位置。Windows库加载的,我们能够利用从Java有一个怪癖。基本上,我们可以以相反的顺序加载的依赖,那么作为我们每一个库,因为它的依赖已经加载到内存中加载,加载程序不会试图加载它们。

解决方法: 

1.Eclipse->preferences->Team->SVN

2.选择SVNKit (Pure Java) xxxxxx

如下图所示

重启之后不再报错。

0 0
原创粉丝点击