JavaHL not loading (NoClassDefError)

James P. picture James P. · Jul 18, 2010 · Viewed 17.8k times · Source

I've reinstalled Windows and unzipped a fresh copy of Eclipse. Despite this, I've been unable access an ssh repository via Subclipse. The issue seems to be with JavaHL and the tests from the Tigris web site give NoClassDefError. Although this could be considered as a software issue I hope someone has come accross this before. Is there a way to fix this? It's quite urgent.

P.S: Things were set up such that Subclipse would look in the config file to forward a call to the PLink client of TortoiseSVN which in turn gets a key that's loaded in Pageant.

Edit: Here's the output from java -jar javahltests.jar now after reinstalling a jdk:

.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.
#

And here's the output I had previously:

.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

Finally, here's what I get in the 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

Answer

stivlo picture stivlo · Jan 23, 2011

I had the same problem with my Eclipse Helios installation in Ubuntu. To solve the problem I had to do the following.

  1. Install the svn library

    $ sudo apt-get install libsvn-java

  2. Find the location of the native libraries. In my case it was /usr/lib/jni. (If you've just installed the library you may have to update the locate db before running locate with /etc/cron.daily/mlocate - on Ubuntu 10.10, other OS may have different script names)

    $ locate libsvnjava

    In my case finds the following files: /usr/lib/jni/libsvnjavahl-1.so, /usr/lib/jni/libsvnjavahl-1.so.0, /usr/lib/jni/libsvnjavahl-1.so.0.0.0

  3. Find the location of eclipse installation directory. For the custom installation I choose /usr/local/eclipse

  4. Edit eclipse.ini contained in that directory. It's a file containing all eclipse options as explained in Eclipse Documentation. Add a line to that file with the following content (adjusting according to your native library path)

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

  5. Restart Eclipse. Everything should work now (In some cases you may need to restart Linux) .