Skip to main content

Native Library in Eclipse RCP

Native Library in Eclipse RCP Plug-in

Adding native library in eclipse RCP is little-bit bit tricky part. Mainly native library has extensions like .so or .dll . There are multiple ways to define this kind of libraries to the eclipse RCP plug-in. (Follow steps one by one anyone of them will work.)

Here we take one example :
Suppose you have following directory structure

<dirPath>/NativeLibraryDirectory/
     --- nativeFile.jar
     --- nativeLib.so


1. Adding library to the project

For adding library to the project , right click on Project name -> select "Properties..." -> then go to "Java Build Path"
Add nativeFile.jar from External jar button.
Expand nativeFile.jar and double click on "native library location"
enter the path "<dirPath>/NativeLibraryDirectory/"

2. Using LD_LIBRARY_PATH
Set following environment before starting the Eclipse.

setenv LD_LIBRARY_PATH <dirPath>/NativeLibraryDirectory/:$LD_LIBRARY_PATH

3. Using -Djava.library.path

-Djava.library.path=<dirPath>/NativeLibraryDirectory/

4. Updating Menifiest (Bundle-Nativecode)

Add following line in MANIFEST.MF

Bundle-NativeCode: /libs/yourlib.dll; /libs/someotherlib.dll; osname=win32; processor=x86


Anyone of above method will work so try it one by one. The do following steps.



Before Using the libray in the code mention following lines
System.loadLibrary("nativeLib")

Comments

Popular posts from this blog

HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException

HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException If you get following error while connecting to your Database with Spring boot, try the suggested solution below: 2018 - 11 - 25 15 : 28 : 50.078 INFO 5335 --- [ main] o. h . e . j . e . i . LobCreatorBuilderImpl : HHH000424: Disabling contextual LOB creation as createClob() method threw error : java. lang . reflect . InvocationTargetException java. lang . reflect . InvocationTargetException : null at sun. reflect . NativeMethodAccessorImpl . invoke0 (Native Method) ~[na: 1.8 . 0 _161] at sun. reflect . NativeMethodAccessorImpl . invoke (NativeMethodAccessorImpl. java : 62 ) ~[na: 1.8 . 0 _161] at sun. reflect . DelegatingMethodAccessorImpl . invoke (DelegatingMethodAccessorImpl. java : 43 ) ~[na: 1.8 . 0 _161] at java. lang . reflect . Method . invoke (Method. java : 498 ) ~[na: 1.8 . 0 _161] at org. hibernate . engin

Could not launch the product because the associated workspace is currently in use by another Eclipse application

If you are seeing following error at the beginning of the Eclipse or any RCP based product then here is the solution: Error Message: "Could not launch the product because the associated workspace is currently in use by another Eclipse application." or “Workspace in use or cannot be created chose a different one.” Solution :  go to workspace location remove file <workspace location>/.metadata/.lock Reason: Through eclipse, user can create multiple Workspace locations. One Workspace location can be edited by one user at a time. A workspace contains the data related to various project configuration and local file storage. To avoid multiple users to access the same workspace, eclipse is maintaining a ".lock" file inside the Workspace. Eclipse will remove this ".lock" file when you will close the Eclipse. But in some cases, the Eclipse will crash due to some error, due to which it could not able to remove ".lock" file from

How to resolve : print() on closed filehandle in perl

How to resolve : print() on closed filehandle in perl Error "print() on closed filehandle" generated in the following condition ( it is on of possible cause of it) -------------------------- BEGIN Code --------------------------------------- my $inputFile = '/this/is/path/of/your/input/file.txt'; open(MYINPUTFILE, ">","$inputFile"); print MYINPUTFILE "any data"; close(MYINPUTFILE); -------------------------- END Code --------------------------------------- here if you don't have permission to access the path '/this/is/path/of/your/input/file.txt' or the path (of parent directory) does not exist then it will throuw the error : print() on closed filehandle To resolve this better to make practice as follow while opening the file: -------------------------- BEGIN Code --------------------------------------- open(MYINPUTFILE, ">","$inputFile") or die "ERROR ::: unable access the file&