Pages

Tuesday, May 04, 2010

JavaHL-ის პრობლემა Eclipse-ში

უბუნტუზე ეკლიპსში tigris-ის subclipse პლაგინის დაყენების შემდეგ, ან ეკლიპსის პლაგინების აპდეიტის შემდეგ, ხშირად თავს იჩენს პობლემა რომლიც მარცხენა სურათზეა ნაჩვენები და ტექსტი კი ქვემოთ:





Failed to load JavaHL Library.
These are the errors that were encountered:
no libsvnjavahl-1 in java.library.path
no svnjavahl-1 in java.library.path
no svnjavahl in java.library.path
java.library.path = /usr/lib/jvm/java-6-sun-1.6.0.15/jre/lib/i386/client:/usr/lib/jvm/java-6-sun-1.6.0.15/jre/lib/i386:/usr/lib/xulrunner-addons:/usr/lib/xulrunner-addons:/usr/java/packages/lib/i386:/lib:/usr/lib

საქმე იმაშია რომ ამ პლაგინს SVN-თან სამუშაოდ შეუძლია გამოიყენოს ორი ბიბლიოთეკიდან ერთ-ერთი:
1) JavaHL - JNI ბაინდინგი ნეიტივ ბიბლიოტეკაზე.
2) SVNkit - მთლიანად ჯავაზე რეალიზებული ბიბლიოტეკა.
ზემოთ აღწერილი შეცდომა ხდება მაშინ როდესაც პლაგინი ცდილობს გამოიყენოს JavaHL და ვერ პოულობს მის ნეიტივ ბიბლიოტეკას (*.so ფაილებს)

ამ პრობლემის გადაწყვეტის ყველაზე მარტივი ვარიანტი არის ეკლიპსის ოპციებში SVNkit-ზე გადართვა. ამისთვის ეკლიპსში შევდივართ Window->Preferences მენუში და ვირჩევთ Team->SVN განყოფილებას, ისე როგორც ეს მარჯვენა სურათზეა ნაჩვენები. აქ კი SVN Interface: Client-ს ჩამოვკეცავთ და გადავრთავთ SVNkit-ზე, რის შემდეგაც პრობლემა გვარდება.

თუ მაინცდამაინც JavaHL-ით გვინდა SVN-თან კავშირი მაშინ ცოტა მეტი ლინუქსოიდობა მოგვიწევს.
პირველ რიგში უბუნტუზე უნდა დავაყენოთ JNI ბაინდინგების ბიბლიოთეკა:
sudo apt-get install libsvn-java
შემდეგ გადმოწერეთ javahltests.jar ფაილი რომელიც დაგვჭირდება JavaHL-ის შესამოწმებლად.  უბუნტუზე JNI ბიბლიოტეკები ჩვეულებრივ /usr/lib/jni ფლდერში ინსტოლირდება. ჯავა კი ჩვეულებრივ არ იყურება ამ ფოლდერში. ამიტომ გადმოწეილი ფაილის ასე გაშვება
java -jar javahltests.jar 
შეცდომას გამოიტანს მიუხედავად იმისა რომ ბიბლიოტეკა დავაინსტოლირეთ.
ამიტომ საჭიროა ჯავას ხელით მივუთითოთ ბიბლიოთეკების ფოლდერი შემდგენაირად:
java -Djava.library.path=/usr/lib/jni -jar javahltests.jar
წესით ახლა უკვე შეცდომები აღარ უნდა გამოიტანოს. შედეგი დაახლოებით ასე უნდა გამოიყურებოდეს:

.........................................
.........
Time: 146.249

OK (50 tests)
ეს ნიშნავს რომ JavaHL, ანუ ბაინდინგი ნეიტივ ბიბლიოტეკაზე კარგად მუშაობს.
ამის შემდეგ დარჩა მხოლოდ ეკლიპსისთვის JNI ნეიტივ ბიბლიოტეკების ფოლდერის მითითება, წინააღმდეგ შემთხვევაში ისიც ვერ დაინახავს მათ და მივიღებთ ისევ იმ შეცდომას.
გადადით ეკლიპსის ფოლდერში და გახსენით eclipse.ini ფაილი და დაამატეთ ქვემოთ მუქად გამოყოფილი ხაზი:

-vmargs
-Djava.library.path=/usr/lib/jni
-Dosgi.requiredJavaVersion=1.5
შეინახეთ ფაილი და გადატვირთეთ ეკლიპსი. წესით ეკლიპსმა შეცდომები JavaHL-ის შესახებ აღარ უნდა გამოიტანოს.