Hi there,

I have a Java project which is using JNI to load a native library. I
would like to install it as a Windows service.

To install it I am running:

prunsrv.exe install FusionDB-Server --DisplayName=FusionDB-Server
--Description="FusionDB Server" --StdError=auto --StdOutput=auto
--LogPath="C:\Users\aretter\AppData\Roaming\FusionDB Server\logs"
--LogPrefix=service --PidFile=service.pid --Startup=auto
--ServiceUser=LocalSystem --Jvm="C:\Program
Files\BellSoft\LibericaJRE-11-Full\bin\client\jvm.dll"
--Classpath="C:/Program Files/FusionDB Server/lib/*" --JvmMs=128m
--StartMode=jvm --StartClass=org.exist.service.ExistDbDaemon
--StartMethod=start --StopMode=jvm
--StopClass=org.exist.service.ExistDbDaemon --StopMethod=stop
--JvmOptions="-Dfile.encoding=UTF-8;-Dlog4j.configurationFile=C:\Program
Files\FusionDB Server/etc/log4j2.xml;-Djetty.home=C:\Program
Files\FusionDB Server;-Dexist.jetty.config=C:\Program Files\FusionDB
Server/etc/jetty/standard.enabled-jetty-configs;-Djetty.git.hash=ab228fde9e55e9164c738d7fa121f8ac5acd51c9;-Dexist.home=C:\Program
Files\FusionDB Server;-Dexist.configurationFile=C:\Program
Files\FusionDB Server/etc/conf.xml" --StartParams="C:\Program
Files\FusionDB Server\etc\conf.xml" --JvmMx=4224m"


However, when I then try and start the Service for my application, my
application raises an error when it tries to load the native library
via Java's System.load(absolutePathToLib) and fails to start up:

Caused by: java.lang.UnsatisfiedLinkError:
C:\Windows\Temp\librocksdbjni18005926251924699790.dll: Can't find
dependent libraries
at java.lang.ClassLoader$NativeLibrary.load0(Native Method) ~[?:?]
at java.lang.ClassLoader$NativeLibrary.load(Unknown Source) ~[?:?]
at java.lang.ClassLoader$NativeLibrary.loadLibrary(Unknown Source) ~[?:?]
at java.lang.ClassLoader.loadLibrary0(Unknown Source) ~[?:?]
at java.lang.ClassLoader.loadLibrary(Unknown Source) ~[?:?]
at java.lang.Runtime.load0(Unknown Source) ~[?:?]
at java.lang.System.load(Unknown Source) ~[?:?]
at 
org.rocksdb.NativeLibraryLoader.loadLibraryFromJar(NativeLibraryLoader.java:79)
~[rocksdbjni-202004011324-patched-debug.jar:?]

If I run my application directly, i.e. not via the Service, then it is
able to correctly load the native library and start's up ok.

I have tested this on both Windows Server 2012 and 2019 with both JRE
8 and JRE 11.

Are there limitations on loading native libraries (or their
dependencies) from a Java Application started from a Procrun service?
I am also using StartMode "jvm" perhaps that has some limitation in this area?

Thanks Adam.

-- 
Adam Retter

skype: adam.retter
tweet: adamretter
http://www.adamretter.org.uk

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@commons.apache.org
For additional commands, e-mail: user-h...@commons.apache.org

Reply via email to