Run workflow from command line on CENTOS issue with SWT

I’ve developed a KNIME workflow that I want to run via the command line on a CentOS server. I downloaded the Linux version of KNIME 3.6.1 and extracted it. I then try to run the workflow with a command like:

/pathTo/knime -batch -reset -workflowFile=/path/workflowFile.knwf

And I’m getting an error like this:

!SESSION 2018-09-05 09:08:49.174 -----------------------------------------------
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Framework arguments:  -batch -reset -workflowFile=/path/WorkflowFile.knwf -
Command-line arguments:  -os linux -ws gtk -arch x86_64 -batch -reset -workflowFile=/path/WorkflowFile.knwf 

!ENTRY org.eclipse.osgi 4 0 2018-09-05 09:09:00.499
!MESSAGE Application error
java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: 
	/pathToKnime/configuration/org.eclipse.osgi/315/0/.cp/ cannot open shared object file: No such file or directory
	no swt-pi3-gtk in java.library.path
	Can't load library: /root/.swt/lib/linux/x86_64/
	Can't load library: /root/.swt/lib/linux/x86_64/
	/root/.swt/lib/linux/x86_64/ cannot open shared object file: No such file or directory

	at org.eclipse.swt.internal.Library.loadLibrary(
	at org.eclipse.swt.internal.Library.loadLibrary(
	at org.eclipse.swt.internal.gtk.OS.<clinit>(
	at org.eclipse.swt.internal.Converter.wcsToMbcs(
	at org.eclipse.swt.internal.Converter.wcsToMbcs(
	at org.eclipse.swt.widgets.Display.<clinit>(
	at org.eclipse.ui.internal.Workbench.createDisplay(
	at org.eclipse.ui.PlatformUI.createDisplay(
	at org.knime.product.rcp.KNIMEApplication.createDisplay(
	at org.knime.product.rcp.KNIMEApplication.start(
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(
	at java.lang.reflect.Method.invoke(
	at org.eclipse.equinox.launcher.Main.invokeFramework(
	at org.eclipse.equinox.launcher.Main.basicRun(
	at org.eclipse.equinox.launcher.Main.main(

I’m not sure if I’ve missed a part of the set up process or not. Does anyone know what I’m doing wrong?


You have the wrong command line. See

1 Like

Dang, something as simple as RTFM! You were correct, when I used the correct command line it worked like a charm, thank you very much!