Icy-imaging / Icy-Kernel

Icy kernel module
http://icy.bioimageanalysis.com/
55 stars 16 forks source link

xuggler missing for some users on Linux #622

Open raacampbell opened 9 years ago

raacampbell commented 9 years ago

I see an error saying there is no xuggle in java.library.path This appears on startup and when I try to load and image. This is version 1.6.1.1

Icy is installed in /opt/icy on CentOS. If I start icy by doing java -jar /opt/icy/updater.jar then it starts fine (I have a script that runs this in /usr/local/bin. However, if other users start Icy the we see the above xuggle error. I tried changing the permissions in the icy folder so that anyway can read/write/execute.

Still doesn't help. I'm out of ideas at this point. Any ideas what I can do about the error or other suggestions for installing Icy in a multi-user environment?

Thanks.

raacampbell commented 9 years ago

I can provide more information, but I'm not sure what would be useful. To clarify, it finds xuggle just find if I run Icy as the user who created the directory structure in /opt/. I don't have to sudo. Other users (who, as it happens, aren't sudoers) can not run without the error.

Stephane-D commented 9 years ago

Thanks, that helps :) How others users are executing icy ? Does they execute "java -jar /opt/icy/updater.jar" or "/opt/icy/icy.sh" ? I think it has to do with the java virtual machine configuration. Can you also give the exact Xuggler error message you obtain when trying to start Icy from user perspective ? Thanks.

Normally Icy already include the whole Xuggler library and it should automatically load the native library but maybe there is a bug when working in a multi-user environment. I found this : http://stackoverflow.com/questions/7420771/java-lang-unsatisfiedlinkerror-no-xuggle-xuggler-in-java-library-path

Installing manually Xuggler and doing a small script to automatically export the modified LD_LIBRARY_PATH may fix the issue .

raacampbell commented 9 years ago

Users start with a script in /usr/local/bin that just executes "java -jar /opt/icy/updater.jar" They typically then see a warning saying that Icy is already running. Likely because someone else has a copy open. Pressing "yes" starts Icy. On start, I see the error: java.lang.UnsatisfiedLinkError: no xuggle in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886) at java.lang.Runtime.loadLibrary0(Runtime.java:849) at java.lang.System.loadLibrary(System.java:1088) at com.xuggle.ferry.JNILibraryLoader.loadLibrary0(JNILibraryLoader.java:268) at com.xuggle.ferry.JNILibraryLoader.loadLibrary(JNILibraryLoader.java:171) at com.xuggle.ferry.JNILibrary.load(JNILibrary.java:161) at com.xuggle.ferry.FerryJNI.(FerryJNI.java:16) at com.xuggle.ferry.Ferry.(Ferry.java:25) at com.xuggle.xuggler.XugglerJNI.(XugglerJNI.java:19) at com.xuggle.xuggler.Global.(Global.java:238) at plugins.stef.importer.xuggler.VideoImporter.(VideoImporter.java:70) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at java.lang.Class.newInstance(Class.java:379) at icy.plugin.PluginLauncher.internalCreate(PluginLauncher.java:122) at icy.plugin.PluginLauncher.start(PluginLauncher.java:153) at icy.file.Loader.getSequenceFileImporters(Loader.java:654) at icy.plugin.PluginLoader.changed(PluginLoader.java:868) at icy.plugin.PluginLoader.reloadInternal(PluginLoader.java:311) at icy.plugin.PluginLoader$1.run(PluginLoader.java:131) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745)

Stephane-D commented 9 years ago

Can you test the solution pointer here : http://stackoverflow.com/questions/7420771/java-lang-unsatisfiedlinkerror-no-xuggle-xuggler-in-java-library-path

The idea is to manually Install Xuggler and doing a small script which automatically patch and export the LD_LIBRARY_PATH with Xuggler installation folder and start Icy. That may fix the problem.

raacampbell commented 9 years ago

I tried exporting the /opt/icy/lib directory, but that didn't help. Maybe I will just ask users to manually install in their home directories. This will also allow users to have seperate preferences, which they don't currently have.

Stephane-D commented 9 years ago

Indeed that should be an easy workaround, still we keep the issue open as we really want to understand what happen here.

raacampbell commented 9 years ago

Thanks. If go back to this and find a solution I shall let you know.

Stephane-D commented 9 years ago

Ok thanks :)