Hi all,
I have a problem that has me stumped, and I'm looking for any help I can get.
I recently ported our company's java code to OSGi bundles, usually running in
the Felix framework and embedded in a device with phoneME JVM. Everything
works great except for a couple of issues, one of which is that on one of our
devices the native libraries won't load. I get an error like this:
Uncaught Exception in thread Serial Communications Thread:
java.lang.UnsatisfiedLinkError Can't load
/var/lib/fluid/osgi-config/bundle9/version0.0/lib/native/linux/mips/librxtxSerial.so
java.lang.ClassLoader.loadLibraryInternal(Unknown Source)
java.lang.ClassLoader.loadLibrary(Unknown Source)
java.lang.Runtime.loadLibrary0(Unknown Source)
java.lang.System.loadLibrary(Unknown Source)
gnu.io.RXTXPort.<clinit>(Unknown Source)
java.lang.Class.runStaticInitializers(Unknown Source)
com.fourhome.zwave.SerialComm.run(Unknown Source)
java.lang.Thread.run(Unknown Source)
java.lang.Thread.startup(Unknown Source)
Even though that library file is there:
# ls
/var/lib/fluid/osgi-config/bundle9/version0.0/lib/native/linux/mips/librxtxSerial.so
/var/lib/fluid/osgi-config/bundle9/version0.0/lib/native/linux/mips/librxtxSerial.so
# cd /var/lib/fluid/osgi-config/bundle9/version0.0/lib/native/linux/mips/
# ls -l
-rw------- 1 0 0 94351 Sep 14 10:46 librxtxSerial.so
I'm starting the bundles in the config.properties file at startup time (pasted
below). I've also tried starting everything but the problematic zwave.jar
bundle, and then starting that one interactively. When I do that, I get:
-> install file:/usr/lib/fluid/plugins/zwave.jar
ERROR: JarContent: Unable to create library directory.
removing /var/lib/fluid/osgi-config/bundle15/bundle.id
rm ret -1
unlinking /var/lib/fluid/osgi-config/bundle15/bundle.id
b 0
removing /var/lib/fluid/osgi-config/bundle15/bundle.location
rm ret -1
unlinking /var/lib/fluid/osgi-config/bundle15/bundle.location
b 0
removing /var/lib/fluid/osgi-config/bundle15/version0.0/bundle.jar
rm ret -1
unlinking /var/lib/fluid/osgi-config/bundle15/version0.0/bundle.jar
b 0
removing /var/lib/fluid/osgi-config/bundle15/version0.0/revision.location
rm ret -1
unlinking /var/lib/fluid/osgi-config/bundle15/version0.0/revision.location
b 0
removing /var/lib/fluid/osgi-config/bundle15/version0.0
rm ret 0
removing /var/lib/fluid/osgi-config/bundle15
rm ret 0
org.osgi.framework.BundleException: Native library does not exist:
native/linux/mips/librxtxSerial.so
at org.apache.felix.framework.searchpolicy.ModuleImpl.<init>(Unknown
Source)
at org.apache.felix.framework.BundleImpl.createModule(Unknown Source)
at org.apache.felix.framework.BundleImpl.<init>(Unknown Source)
at org.apache.felix.framework.Felix.installBundle(Unknown Source)
at org.apache.felix.framework.Felix.installBundle(Unknown Source)
at org.apache.felix.framework.BundleContextImpl.installBundle(Unknown
Source)
at org.apache.felix.shell.impl.InstallCommandImpl.install(Unknown
Source)
at org.apache.felix.shell.impl.InstallCommandImpl.execute(Unknown
Source)
at
org.apache.felix.shell.impl.Activator$ShellServiceImpl.executeCommand(Unknown
Source)
at org.apache.felix.shell.tui.Activator$ShellTuiRunnable.run(Unknown
Source)
at java.lang.Thread.run(Unknown Source)
at java.lang.Thread.startup(Unknown Source)
org.osgi.framework.BundleException: Native library does not exist:
native/linux/mips/librxtxSerial.so
In particular, the line that says "ERROR: JarContent: Unable to create library
directory." seems promising. When I do things this way, the bundle is never
installed and the bundle directory is never created. But I don't know why.
What I'm looking for is any advice on how to tease more information out of
Felix about what the problem is with that library. Note that this setup works
fine on at least three other embedded platforms as well as on my linux PC. Any
help at all is very much appreciated, and I mean that. If there is any
additional information that would help I can get it. I've pasted below some
other misc. stuff.
Thank you,
Matt
Start command:
-----------------------------
Starting fluid core with this command: 'cvm -Xmx8m
-Djava.net.preferIPv4Stack=true -Dcore.data.dir=/var/lib/fluid
-Dcore.lon.enable=false -Dcore.manufacturer.name=4Home
-Dcore.model.number=CP2000 -Dcore.config.protect=true
-Dcore.config.password=4444444444 -Dcore.config.user=4HDEFAULT
-Dcore.net.interface=br0 -Dcore.zwave1.interface=/dev/tts/1
-Dcore.logging.level=4 -Dcore.conf.file=/var/lib/fluid/fluid-core.conf
-Dorg.osgi.framework.storage=/var/lib/fluid/osgi-config
-Dfelix.config.properties=file:/var/lib/fluid/osgi-config/config.properties
-jar lib/felix.jar'
config.properties
-----------------------------
felix.log.level=4
felix.auto.start.1= file:lib/commons.jar
file:lib/org.apache.felix.configadmin-1.0.10.jar
file:lib/org.apache.felix.http.jetty-1.0.1.jar
file:lib/org.apache.felix.log-1.0.0.jar
file:lib/org.apache.felix.shell-1.2.0.jar
file:lib/org.apache.felix.shell.tui-1.2.0.jar file:lib/RXTXcomm.jar
file:lib/upnplib.jar file:core.jar file:plugins/ipc.jar file:plugins/led.jar
file:plugins/ndc.jar file:plugins/pgw.jar file:plugins/portmap.jar
file:plugins/tweenagent.jar file:plugins/upnp.jar file:plugins/zwave.jar
felix.service.urlhandlers=false
org.apache.felix.http.nio=false
org.ungoverned.osgi.bundle.https.enabled=false
Manifest of the zwave.jar bundle:
-----------------------------
Ant-Version Apache Ant 1.7.1
Bundle-Activator com.fourhome.zwave.ZWaveClient
Bundle-ManifestVersion 2
Bundle-Name 4Home ZWave Client
Bundle-NativeCode
native/linux/mips/librxtxSerial.so;osname=linux;processor=mips
Bundle-SymbolicName ZWave
Bundle-Version 3.1.4
Created-By 14.0-b16 (Sun Microsystems Inc.)
Import-Package com.fourhome.commons,
org.osgi.framework;version="1.3.0"
Manifest-Version 1.0
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]