You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by jean-frederic clere <jf...@fujitsu-siemens.com> on 2002/01/14 17:12:29 UTC
jk2 problems with libapr.so
Hi,
I am playing with jk2 and I have noted that the loadNative() in AprImpl fails:
+++
java.lang.UnsatisfiedLinkError:
/home/jakarta/jakarta-tomcat-4.0.1/webapps/jk/WEB-INF/jk2/jni/libapr.so:
/home/jakarta/jakarta-tomcat-4.0.1/webapps/jk/WEB-INF/jk2/jni/libapr.so:
undefined symbol: crypt
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1382)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1277)
at java.lang.Runtime.load0(Runtime.java:698)
at java.lang.System.load(System.java:797)
at org.apache.jk.apr.AprImpl.loadNative(AprImpl.java:90)
at org.apache.jk.apr.AprImpl.loadNative(AprImpl.java:78)
at org.apache.jk.common.ChannelUn.init(ChannelUn.java:135)
+++
The problem is that apr needs other dynamic library.
How should we solve the problem?:
1 - Loading the missing libraries in the JVM (via System.load()) The list of
needed library is in APRVARS.
2 - Link jni_connect.so against a static libapr.a (like in mod_webapp for
Apache-1.3).
something like: gcc -shared -lm -lcrypt -lnsl -ldl -o jni_connect.so ...
libapr.a
Any comments?
Cheers
Jean-frederic
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: jk2 problems with libapr.so
Posted by Aaron Bannert <aa...@clove.org>.
On Mon, Jan 14, 2002 at 05:12:29PM +0100, jean-frederic clere wrote:
> Hi,
>
> I am playing with jk2 and I have noted that the loadNative() in AprImpl fails:
> +++
> java.lang.UnsatisfiedLinkError:
> /home/jakarta/jakarta-tomcat-4.0.1/webapps/jk/WEB-INF/jk2/jni/libapr.so:
> /home/jakarta/jakarta-tomcat-4.0.1/webapps/jk/WEB-INF/jk2/jni/libapr.so:
> undefined symbol: crypt
> at java.lang.ClassLoader$NativeLibrary.load(Native Method)
> at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1382)
> at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1277)
> at java.lang.Runtime.load0(Runtime.java:698)
> at java.lang.System.load(System.java:797)
> at org.apache.jk.apr.AprImpl.loadNative(AprImpl.java:90)
> at org.apache.jk.apr.AprImpl.loadNative(AprImpl.java:78)
> at org.apache.jk.common.ChannelUn.init(ChannelUn.java:135)
> +++
> The problem is that apr needs other dynamic library.
>
> How should we solve the problem?:
> 1 - Loading the missing libraries in the JVM (via System.load()) The list of
> needed library is in APRVARS.
> 2 - Link jni_connect.so against a static libapr.a (like in mod_webapp for
> Apache-1.3).
> something like: gcc -shared -lm -lcrypt -lnsl -ldl -o jni_connect.so ...
> libapr.a
>
> Any comments?
Sorry for replying to this so late. As an FYI, APRVARS will soon be
removed from APR. Take a look at the replacement apr-config and
apu-config (in apr and apr-util respectively). It's not yet complete
(that's why APRVARS hasn't been removed yet), but if you see something
missing let us know.
-aaron
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: jk2 problems with libapr.so
Posted by jean-frederic clere <jf...@fujitsu-siemens.com>.
costinm@covalent.net wrote:
>
> That's a bit problematic...
>
> I think it'll work fine if LD_LIBRARY_PATH is set before starting tomcat
> to include all the libs ( and libapr ) or of libapr ( and the rest ) are
> installed in the system dirs ( i.e. /usr/lib ).
It works better ;-) using System.loadLibrary() and set the LD_LIBRARY_PATH
before starting the JVM solves problem of finding the path.
System.loadNative("/usr/local/lib/libapr.so"); could be changed into
System.loadLibrary(apr);
The remaing problem are the dependencies of libapr.so
How to load the needed libraries?
loadLibrary() does not make the symbols available to other libraries. (like
dlopen(RTLD_NOW|RTLD_GLOBAL)).
>
> The code in loadNative() was trying to work around and not require the
> user to set LD_LIBRARY_PATH, but including all deps is ugly.
>
> I suppose having libapr in lib path is a 'decent' requirement and we
> should drop the workaround.
>
> Using the .a lib is imho the worst solution - and I'm not sure how it'll
> interact with the jni connector ( when apr syms will be loaded twice ).
If there is only one *.so file that is no problem.
Using a dynamic libapr was a lot of problems in mod_webapp.
>
> Costin
>
> On Mon, 14 Jan 2002, jean-frederic clere wrote:
>
> > Hi,
> >
> > I am playing with jk2 and I have noted that the loadNative() in AprImpl fails:
> > +++
> > java.lang.UnsatisfiedLinkError:
> > /home/jakarta/jakarta-tomcat-4.0.1/webapps/jk/WEB-INF/jk2/jni/libapr.so:
> > /home/jakarta/jakarta-tomcat-4.0.1/webapps/jk/WEB-INF/jk2/jni/libapr.so:
> > undefined symbol: crypt
> > at java.lang.ClassLoader$NativeLibrary.load(Native Method)
> > at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1382)
> > at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1277)
> > at java.lang.Runtime.load0(Runtime.java:698)
> > at java.lang.System.load(System.java:797)
> > at org.apache.jk.apr.AprImpl.loadNative(AprImpl.java:90)
> > at org.apache.jk.apr.AprImpl.loadNative(AprImpl.java:78)
> > at org.apache.jk.common.ChannelUn.init(ChannelUn.java:135)
> > +++
> > The problem is that apr needs other dynamic library.
> >
> > How should we solve the problem?:
> > 1 - Loading the missing libraries in the JVM (via System.load()) The list of
> > needed library is in APRVARS.
> > 2 - Link jni_connect.so against a static libapr.a (like in mod_webapp for
> > Apache-1.3).
> > something like: gcc -shared -lm -lcrypt -lnsl -ldl -o jni_connect.so ...
> > libapr.a
> >
> > Any comments?
> >
> > Cheers
> >
> > Jean-frederic
> >
> > --
> > To unsubscribe, e-mail: <ma...@jakarta.apache.org>
> > For additional commands, e-mail: <ma...@jakarta.apache.org>
> >
>
> --
> To unsubscribe, e-mail: <ma...@jakarta.apache.org>
> For additional commands, e-mail: <ma...@jakarta.apache.org>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: jk2 problems with libapr.so
Posted by co...@covalent.net.
That's a bit problematic...
I think it'll work fine if LD_LIBRARY_PATH is set before starting tomcat
to include all the libs ( and libapr ) or of libapr ( and the rest ) are
installed in the system dirs ( i.e. /usr/lib ).
The code in loadNative() was trying to work around and not require the
user to set LD_LIBRARY_PATH, but including all deps is ugly.
I suppose having libapr in lib path is a 'decent' requirement and we
should drop the workaround.
Using the .a lib is imho the worst solution - and I'm not sure how it'll
interact with the jni connector ( when apr syms will be loaded twice ).
Costin
On Mon, 14 Jan 2002, jean-frederic clere wrote:
> Hi,
>
> I am playing with jk2 and I have noted that the loadNative() in AprImpl fails:
> +++
> java.lang.UnsatisfiedLinkError:
> /home/jakarta/jakarta-tomcat-4.0.1/webapps/jk/WEB-INF/jk2/jni/libapr.so:
> /home/jakarta/jakarta-tomcat-4.0.1/webapps/jk/WEB-INF/jk2/jni/libapr.so:
> undefined symbol: crypt
> at java.lang.ClassLoader$NativeLibrary.load(Native Method)
> at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1382)
> at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1277)
> at java.lang.Runtime.load0(Runtime.java:698)
> at java.lang.System.load(System.java:797)
> at org.apache.jk.apr.AprImpl.loadNative(AprImpl.java:90)
> at org.apache.jk.apr.AprImpl.loadNative(AprImpl.java:78)
> at org.apache.jk.common.ChannelUn.init(ChannelUn.java:135)
> +++
> The problem is that apr needs other dynamic library.
>
> How should we solve the problem?:
> 1 - Loading the missing libraries in the JVM (via System.load()) The list of
> needed library is in APRVARS.
> 2 - Link jni_connect.so against a static libapr.a (like in mod_webapp for
> Apache-1.3).
> something like: gcc -shared -lm -lcrypt -lnsl -ldl -o jni_connect.so ...
> libapr.a
>
> Any comments?
>
> Cheers
>
> Jean-frederic
>
> --
> To unsubscribe, e-mail: <ma...@jakarta.apache.org>
> For additional commands, e-mail: <ma...@jakarta.apache.org>
>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>