【问题标题】:JavaHL not loading (NoClassDefError)JavaHL 未加载 (NoClassDefError)
【发布时间】:2010-07-18 08:56:40
【问题描述】:

我已经重新安装了 Windows 并解压缩了一个新的 Eclipse 副本。尽管如此,我还是无法通过 Subclipse 访问 ssh 存储库。问题似乎出在 JavaHL 上,来自 Tigris 网站的测试给出了 NoClassDefError。虽然这可以被认为是一个软件问题,但我希望有人以前遇到过这个问题。有没有办法解决这个问题?很紧急。

P.S:设置了这样的东西,Subclipse 会在配置文件中查找以将调用转发到 TortoiseSVN 的 PLink 客户端,该客户端反过来会获取在 Pageant 中加载的密钥。

编辑:这是重新安装 jdk 后 java -jar javahltests.jar 现在的输出:

.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.
E.E.E.E.E.E.E.E.E.E
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0xffbadd11, pid=752, tid=656
#
# JRE version: 6.0_21-b06
# Java VM: Java HotSpot(TM) Client VM (17.0-b16 mixed mode, sharing windows-x86 )
# Problematic frame:
# C  0xffbadd11
#
# An error report file with more information is saved as:
# C:\\hs_err_pid752.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

这是我之前的输出:

.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.
E.E.E.E.E.E.E.E.E.E
Time: 0,047
There were 50 errors:
1) testCreate(org.tigris.subversion.javahl.SVNAdminTests)java.lang.UnsatisfiedLinkError: no svnjavahl-1 in java.library.path
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at org.tigris.subversion.javahl.NativeResources.loadNativeLibrary(NativeResources.java:79)
    at org.tigris.subversion.javahl.SVNAdmin.<clinit>(SVNAdmin.java:32)
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
2) testSetRevProp(org.tigris.subversion.javahl.SVNAdminTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
3) testLogDate(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
4) testVersion(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
5) testPathValidation(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
6) testPathIsURL(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
7) testMergeinfoParser(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
8) testBasicStatus(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
9) testOODStatus(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
10) testBasicCheckout(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
11) testBasicCommit(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
12) testBasicProperties(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
13) testBasicUpdate(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
14) testBasicMkdirUrl(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
15) testCopy(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
16) testMove(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
17) testBasicMergingUpdate(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
18) testBasicConflict(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
19) testBasicCleanup(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
20) testBasicRevert(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
21) testBasicSwitch(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
22) testBasicDelete(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
23) testBasicCheckoutDeleted(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
24) testBasicNodeKindChange(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
25) testBasicImport(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
26) testBasicCat(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
27) testBasicCatStream(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
28) testBasicLs(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
29) testBasicAddIgnores(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
30) testBasicImportIgnores(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
31) testBasicInfo(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
32) testBasicLogMessage(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
33) testBasicVersionInfo(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
34) testBasicLocking(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
35) testBasicInfo2(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
36) testBasicChangelist(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
37) testBasicMerge(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
38) testMergeUsingHistory(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
39) testMergeReintegrate(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
40) testMergeConflictResolution(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
41) testRecordOnlyMerge(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
42) testDiff(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
43) testDiffSummarize(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
44) testBasicIsAdminDirectory(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
45) testBasicCancelOperation(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
46) testDataTransferProgressReport(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
47) testTreeConflict(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
48) testObstructionTolerance(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
49) testBasicBlame(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)
50) testCommitRevprops(org.tigris.subversion.javahl.BasicTests)java.lang.NoClassDefFoundError: Could not initialize class org.tigris.subversion.javahl.SVNAdmin
    at org.tigris.subversion.javahl.SVNTests.setUp(SVNTests.java:218)
    at org.tigris.subversion.javahl.RunTests.main(RunTests.java:111)

FAILURES!!!
Tests run: 50,  Failures: 0,  Errors: 50

最后,这是我在 Eclipse IDE 中得到的:

Failed to load JavaHL Library.
These are the errors that were encountered:
F:\eclipse helios\eclipse-jee-helios-win32\eclipse\plugins\org.tigris.subversion.clientadapter.javahl.win32_1.6.12\libsvnjavahl-1.dll: Can't find dependent libraries
no svnjavahl-1 in java.library.path
no svnjavahl in java.library.path
java.library.path = F:\eclipse helios\eclipse-jee-helios-win32\eclipse\plugins

【问题讨论】:

    标签: java windows eclipse subclipse javahl


    【解决方案1】:

    我在 Ubuntu 中安装 Eclipse Helios 时遇到了同样的问题。为了解决这个问题,我必须执行以下操作。

    1. 安装 svn 库

      $ sudo apt-get install libsvn-java

    2. 查找原生库的位置。就我而言,它是 /usr/lib/jni。 (如果您刚刚安装了库,您可能需要在使用 /etc/cron.daily/mlocate 运行 locate 之前更新 locate db - 在 Ubuntu 10.10 上,其他操作系统可能有不同的脚本名称)

      $ 定位 libsvnjava

      在我的情况下找到以下文件:/usr/lib/jni/libsvnjavahl-1.so、/usr/lib/jni/libsvnjavahl-1.so.0、/usr/lib/jni/libsvnjavahl-1。所以.0.0.0

    3. 找到eclipse安装目录的位置。对于自定义安装,我选择 /usr/local/eclipse

    4. 编辑该目录中包含的 eclipse.ini。这是一个包含所有 eclipse 选项的文件,如 Eclipse Documentation 中所述。在该文件中添加一行内容如下(根据你的原生库路径调整)

      -Djava.library.path=/usr/lib/jni

    5. 重启 Eclipse。现在一切正常(在某些情况下,您可能需要重新启动 Linux)。

    【讨论】:

    • 另请注意,在第 4 步中,如果设置 -Djava.library.path=... 对您不起作用,您可以尝试运行 export LD_LIBRARY_PATH=/usr/lib/jni:$LD_LIBRARY_PATH,这对我有用。
    • 在我的情况下 -Djava.library.path=/usr/lib/x86_64-linux-gnu/jni/ 工作
    【解决方案2】:

    下面是一些带有解决方案的故事。

    首先,故事。我遇到了类似的错误:

    • svn, version 1.8.8 (r1568071);
    • Eclipse Mars.1;
    • Ubuntu Linuxtrusty;
    • 与任一:

      (我在单个 Eclipse Mars.1 实例中切换两个子剪辑源)。

    错误消息是:

    1. java.lang.LinkageError: 本机库版本必须至少为 1.9.0,但仅为 1.8.8 (r1568071)
      在 org.apache.subversion.javahl.NativeResources.init(NativeResources.java:148)
      在 org.apache.subversion.javahl.NativeResources.loadNativeLibrary(NativeResources.java:111)
      在 org.apache.subversion.javahl.types.Version.(Version.java:40)
      在 org.apache.subversion.javahl.NativeResources.init(NativeResources.java:145)
      在 org.apache.subversion.javahl.NativeResources.loadNativeLibrary(NativeResources.java:111)
      在 org.apache.subversion.javahl.SVNClient.(SVNClient.java:52)
      在 org.tigris.subversion.svnclientadapter.javahl.JhlClientAdapterFactory.isAvailable(JhlClientAdapterFactory.java:183)
      在 org.tigris.subversion.clientadapter.javahl.Activator.isAvailable(Activator.java:90)
      在 org.tigris.subversion.clientadapter.Activator.getClientAdapter(Activator.java:81)
      在 org.tigris.subversion.subclipse.core.SVNClientManager.getAdapter(SVNClientManager.java:127)
      在 org.tigris.subversion.subclipse.core.SVNClientManager.getSVNClient(SVNClientManager.java:94)
      在 org.tigris.subversion.subclipse.core.SVNProviderPlugin.getSVNClient(SVNProviderPlugin.java:462)
      在 org.tigris.subversion.subclipse.core.repo.SVNRepositoryLocation.getSVNClient(SVNRepositoryLocation.java:257)
      在 org.tigris.subversion.subclipse.core.resources.RemoteFolder.getMembers(RemoteFolder.java:164)
      在 org.tigris.subversion.subclipse.core.resources.RemoteFolder.members(RemoteFolder.java:260)
      在 org.tigris.subversion.subclipse.ui.operations.FetchMembersOperation.execute(FetchMembersOperation.java:41)
      在 org.tigris.subversion.subclipse.ui.operations.SVNOperation.run(SVNOperation.java:90)
      在 org.tigris.subversion.subclipse.ui.repository.model.SVNRepositoryRootElement.fetchDeferredChildren(SVNRepositoryRootElement.java:73)
      在 org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:232)
      在 org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
    2. java.lang.NoClassDefFoundError: 无法初始化类 org.apache.subversion.javahl.SVNClient
      在 org.tigris.subversion.svnclientadapter.javahl.JhlClientAdapter.(JhlClientAdapter.java:57)
      在 org.tigris.subversion.clientadapter.javahl.Activator.getAdapter(Activator.java:64)
      在 org.tigris.subversion.clientadapter.Activator.getClientAdapter(Activator.java:84)
      在 org.tigris.subversion.subclipse.core.SVNClientManager.getAdapter(SVNClientManager.java:127)
      在 org.tigris.subversion.subclipse.core.SVNClientManager.getSVNClient(SVNClientManager.java:94)
      在 org.tigris.subversion.subclipse.core.SVNProviderPlugin.getSVNClient(SVNProviderPlugin.java:462)
      在 org.tigris.subversion.subclipse.core.repo.SVNRepositoryLocation.getSVNClient(SVNRepositoryLocation.java:257)
      在 org.tigris.subversion.subclipse.core.resources.RemoteFolder.getMembers(RemoteFolder.java:164)
      在 org.tigris.subversion.subclipse.core.resources.RemoteFolder.members(RemoteFolder.java:260)
      在 org.tigris.subversion.subclipse.ui.operations.FetchMembersOperation.execute(FetchMembersOperation.java:41)
      在 org.tigris.subversion.subclipse.ui.operations.SVNOperation.run(SVNOperation.java:90)
      在 org.tigris.subversion.subclipse.ui.repository.model.SVNRepositoryRootElement.fetchDeferredChildren(SVNRepositoryRootElement.java:73)
      在 org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:232)
      在 org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

    上面的LinkageError可能是和[3]不兼容造成的:

    [3]:

    要求 - 当前主人

    • [...]

    • Subversion 1.9 JavaHL 客户端库

    (这是https://github.com/subclipse/subclipse/wiki 的摘录,请参阅要求 - 当前主人部分)。

    为了解决我的 svn 1.8.8 的不兼容问题,我尝试安装旧版

    SVN 1.8.x - https://dl.bintray.com/subclipse/archive/release/1.10.x/

    (这是https://github.com/subclipse/subclipse/wiki 的摘录,请参阅旧版部分)。

    Eclipse 告诉Cannot perform operation,作为alternate solution,我在备用解决方案的单选按钮组中选择了Update my installation to be compatible with the items being installed 选项。然后,我点击了几次Next,确认了许可,回复了未签名的内容警告,并在提示时重新启动了 Eclipse。这没有帮助,因为出现了各种错误日志视图条目。


    第二,解决方案。

    【讨论】:

      【解决方案3】:

      如果您确实提供了详细的异常消息或屏幕截图来解释问题,将会很有帮助。

      如果真的很紧急,请先使用svn 命令,然后再找出解决方法。

      更新 #1 为了帮助诊断您的问题,请下载JavaHL test library 并按照页面中提到的说明进行操作。在此处更新我们,我们将进一步为您提供帮助。

      【讨论】:

      • 嗨,yclian,感谢您的回复。我添加了一些错误消息和屏幕截图。只是为了添加一些东西,putty 可以访问服务器,而 tortoisesvn 可以使用私钥进行结帐。这个问题似乎仅限于 Eclipse。我想我可以使用 tortoisesvn,但它的选项比 subclipse 少
      • JavaHL 结果已添加到答案中。尽管插件显示为已安装在 Eclipse 中,但它似乎找不到任何类。
      • 您的 JavaHL 测试结果似乎是 JVM 崩溃。您是否尝试过多次运行它并使用其他 JRE 版本?
      • 是否可以同时运行不同版本的 JRE?是的,这似乎是一场崩溃。这可能是由于 Eclipse 3.6(后来不是更大)的一个错误导致它无法正确检测 Java 导致它分配的内存不足。在此期间我所做的是使用更新的操作系统再次重新安装。 JavaHL 似乎能够再次与 TortoisePLink 对话。我想这意味着问题已经解决了。找出问题所在会很好,但我有很多事情要做。
      • 是的,您可以同时运行不同的 JRE - 几乎总是可能的。请注意,您的 JavaHL 测试可能没有使用与 Eclipse 相同的 JRE。
      【解决方案4】:

      您可以选择使用 SVNKit 库而不是 JavaHL,JavaHL 是 Subversion 使用的协议的 100% 纯 Java 实现。此选项的优点是不需要任何本机库。

      【讨论】:

      • 感谢 gubra 的建议。我已经对其进行了测试,并且不断弹出一个对话框请求身份验证信息。之前的配置方式是,Subclipse 会在它的配置文件中查看“svn =”行并触发 TortoisePLink,然后通过 Pageant 获取密钥文件。
      • 如果您可以添加简单的命令来使用 SVNKit,我会很酷。如果我找到它,我会在这里添加它。
      • 关于如何切换到纯 Java SVNKit 的工作说明可在此处获得:stackoverflow.com/a/15949392/529442>.
      【解决方案5】:

      我在 OS X 10.7.5 中看到了同样的问题。解决方案似乎包括两件事:

      • 将 JavaHL .jar 文件与库放在同一位置(在 OS X 中,库和 jar 文件是放置在 /Library/Java/Extensions 中的符号链接)。 h/t 到Javin Paul
      • 以 root 身份运行测试。由于某些未知原因,以普通用户身份运行它们会导致在创建文件时出现某种权限问题。

      我会花更多的时间来追踪剩余的问题,但我已经花了整整一个上午的时间来解决这个问题:-(

      【讨论】:

        猜你喜欢
        • 2018-07-22
        • 2012-07-30
        • 1970-01-01
        • 2013-07-29
        • 2013-04-21
        • 2015-08-31
        • 1970-01-01
        • 1970-01-01
        • 2012-04-18
        相关资源
        最近更新 更多