On 12/05/2020 11:40, Adam Retter wrote: > 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?
It shouldn't. Maybe a permissions problem? Although running as LocalService is should be fine. I guess check the obvious. Does the dll exist where the app is looking? Can LocalSystem read that file etc. Mark --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
