Thread: Loading of native libraries in PLJAVA

Loading of native libraries in PLJAVA

From
Nageshwar Rao
Date:

        We are facing 2 problems in loading files from Pljava. 

        1. Loading Native C library from Pljava trigger.
               
                From Pljava trigger, we were trying to load native library, Using System.loadLibrary("<library_name>"), which is

                   specified in the LD_LIBRARY_PATH.
               
                Also specified the library file under /var/lib/pljava where all the pljava specifc "*.so" files are located, which has an entry in the postgresql.conf -                        dynamic_library_path for "/var/lib/pljava",

               
                Both theses cases failed to load native library.

                we are getting this error in both cases- UnSatisfiedLinkedError
       
        2. Loading Properties file from trigger. (using Properties.load(<properties_name.properties>))
                We are unable to load properties file from Properties.load("<properties_name.properties>").
                we have included properties file in jar file and installed the jar and set the jar file in the classpath using "sqlj.set_classpath".

                  

Any light on this.

Thnx
Rao
       

       
       

Re: Loading of native libraries in PLJAVA

From
Thomas Hallgren
Date:
Nageshwar,
This is not the right forum for PL/Java issues. You should use mailing
list at pljava-dev@gborg.postgresql.org.

>         We are facing 2 problems in loading files from Pljava.
>
>         1. Loading Native C library from Pljava trigger.
>
>                 From Pljava trigger, we were trying to load native
> library, Using System.loadLibrary("<library_name>"), which is
>
>                    specified in the LD_LIBRARY_PATH.
 >
The likely cause of this is that this library in turn have dependencies
to something not specified in the LD_LIBRARY_PATH or that you have some
mismatch in function naming. That in turn should be apparent from the
exception message (can't tell since you didn't convey it here).

>
>                 Also specified the library file under /var/lib/pljava
> where all the pljava specifc "*.so" files are located, which has an
> entry in the postgresql.conf -
> dynamic_library_path for "/var/lib/pljava",
>
>
>                 Both theses cases failed to load native library.
>
>                 we are getting this error in both cases-
> UnSatisfiedLinkedError
 >
The dynamic_library_path is only used by the PostgreSQL backend when it
loads a module. It has no effect whatsoever on the System.loadLibrary
method.

>
>         2. Loading Properties file from trigger. (using
> Properties.load(<properties_name.properties>))
>                 We are unable to load properties file from
> Properties.load("<properties_name.properties>").
>                 we have included properties file in jar file and
> installed the jar and set the jar file in the classpath using
> "sqlj.set_classpath".
>
To my knowledge there's Properties.load method that takes a String argument.

You have to use the Class.getResourceAsString() in order to obtain an
InputStream for a resource stored in a jar file. The class in question
should be in the same package as the resource (i.e. your properties file).

Regards,
Thomas Hallgren