Starting KNIME from console: NoClassDefFoundError: Could not initialize class org.knime.database.driver.DBDriverRegistry$DriverClassLoader

I already posted this question here on StackOverflow.com. Please check out the comments and replies for more in-depth knowledge about the problem.

All of the error messages that I could not post to the subsequent question asked on StackOverflow.com can be found here.


Because the operating system of my remote desktop computer that I am using for work prevents me from executing EXE files, I am now trying to find a workaround in order to use the software. These are the steps that I have taken so far:

  1. I downloaded the KNIME Analytics Platform for Windows (zip archive) from here and unzipped it to C:\Users\username\Downloads\knime_4.6.3.
  2. Then, I copied a CMD file, created by a colleauge, placed it in the very same folder and executed it in order to start the program. The contents of the file are as follows:
@echo off
SET JAVA_HOME=C:\Program Files\Java\OracleJDK\17-0-2
SET PATH=C:\Program Files\Java\OracleJDK\17-0-2\bin;%PATH%

java -jar plugins/org.eclipse.equinox.launcher_1.6.100.v20201223-0822.jar -Djava.class.path=plugins/org.eclipse.equinox.launcher_1.6.100.v20201223-0822.jar -cp plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.2.100.v20210209-1541;plugins/org.knime.database_4.6.0.v202205251236/knime-db-core.jar -server -Dsun.java2d.d3d=false -Dosgi.classloader.lock=classname -XX:+UnlockDiagnosticVMOptions -XX:+UseG1GC -Dsun.net.client.defaultReadTimeout=0 -XX:CompileCommand=exclude,javax/swing/text/GlyphView,getBreakSpot -Dknime.xml.disable_external_entities=true --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.channels=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio=ALL-UNNAMED --add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED --add-opens=java.base/sun.net.www.protocol.http=ALL-UNNAMED -Xmx2048m -Dorg.eclipse.swt.browser.IEVersion=11001 -Dsun.awt.noerasebackground=true -Dequinox.statechange.timeout=30000 -Darrow.enable_unsafe_memory_access=true -Darrow.memory.debug.allocator=false -Darrow.enable_null_check_for_get=false --add-opens=java.security.jgss/sun.security.jgss.krb5=ALL-UNNAMED --add-exports=java.security.jgss/sun.security.jgss=ALL-UNNAMED --add-exports=java.security.jgss/sun.security.jgss.spi=ALL-UNNAMED --add-exports=java.security.jgss/sun.security.krb5.internal=ALL-UNNAMED --add-exports=java.security.jgss/sun.security.krb5=ALL-UNNAMED 

pause
  1. After the program started, I went to Help -> Install New Software... -> Manage.... This opened a Preferences window with a tree structure set to the leaf Install/Update -> Available Software Sites.
  2. I changed the URLs in the Location column form https to http in order to avoid having trouble with firewalls blocking traffic and clicked on Apply and Close.
  3. Next, I went to File -> Install KNIME Extensions....
  4. There, I opened the node KNIME & Extensions, checked KNIME JDBC Driver For Oracle Database and clicked Next > twice.
  5. After that, I selectd I accept the terms of the license agreement and clicked Finish.
  6. When the Software Updates window opened, asking me the question Restart KNIME Analytics Platform to apply the software update?, I did not click on Restart Now but closed the program completely and executed the CMD file once again in order to start KNIME.
  7. In order to create a new KNIME workflow, I went to the KNIME Explorer and right-clicked on LOCAL (Local Workspace) and then on New KNIME Workflow....
  8. I entered a name where it says Name of the workflow to create: and clicked Finish. This opened a new tab window in the middle of the screen with the name of my workflow.
  9. In the Node Repository, I selected the node DB -> Connection and looked for the leaf Oracle Connector.
  10. When I dragged and dropped this node onto my workspace, problems started to arise.

KNIME first prompted these messages to its console with a lot of ERROR DBDriverRegistry messages and two warnings:

WARN  Oracle Connector     3:1        Please install the KNIME JDBC Driver For Oracle Database plug-in or register your own driver. For more information on how to install the plug-in see https://docs.knime.com/latest/db_extension_guide/index.html#db_plugin.
WARN  Oracle Connector     3:1        Please register a compatible driver via the KNIME preference page. (For details see the log file)

The log file contains the following (Das Handle ist ungĂĽltig. = The handle is invalid.):

!SESSION 2022-11-14 09:59:42.581 -----------------------------------------------
eclipse.buildId=unknown
java.version=17.0.2
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE
Framework arguments:  -Djava.class.path=plugins/org.eclipse.equinox.launcher_1.6.100.v20201223-0822.jar -cp plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.2.100.v20210209-1541;plugins/org.knime.database_4.6.0.v202205251236/knime-db-core.jar -server -Dsun.java2d.d3d=false -Dosgi.classloader.lock=classname -XX:+UnlockDiagnosticVMOptions -XX:+UseG1GC -Dsun.net.client.defaultReadTimeout=0 -XX:CompileCommand=exclude,javax/swing/text/GlyphView,getBreakSpot -Dknime.xml.disable_external_entities=true --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.channels=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio=ALL-UNNAMED --add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED --add-opens=java.base/sun.net.www.protocol.http=ALL-UNNAMED -Xmx2048m -Dorg.eclipse.swt.browser.IEVersion=11001 -Dsun.awt.noerasebackground=true -Dequinox.statechange.timeout=30000 -Darrow.enable_unsafe_memory_access=true -Darrow.memory.debug.allocator=false -Darrow.enable_null_check_for_get=false --add-opens=java.security.jgss/sun.security.jgss.krb5=ALL-UNNAMED --add-exports=java.security.jgss/sun.security.jgss=ALL-UNNAMED --add-exports=java.security.jgss/sun.security.jgss.spi=ALL-UNNAMED --add-exports=java.security.jgss/sun.security.krb5.internal=ALL-UNNAMED --add-exports=java.security.jgss/sun.security.krb5=ALL-UNNAMED
Command-line arguments:  -Djava.class.path=plugins/org.eclipse.equinox.launcher_1.6.100.v20201223-0822.jar -cp plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.2.100.v20210209-1541;plugins/org.knime.database_4.6.0.v202205251236/knime-db-core.jar -server -Dsun.java2d.d3d=false -Dosgi.classloader.lock=classname -XX:+UnlockDiagnosticVMOptions -XX:+UseG1GC -Dsun.net.client.defaultReadTimeout=0 -XX:CompileCommand=exclude,javax/swing/text/GlyphView,getBreakSpot -Dknime.xml.disable_external_entities=true --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.channels=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio=ALL-UNNAMED --add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED --add-opens=java.base/sun.net.www.protocol.http=ALL-UNNAMED -Xmx2048m -Dorg.eclipse.swt.browser.IEVersion=11001 -Dsun.awt.noerasebackground=true -Dequinox.statechange.timeout=30000 -Darrow.enable_unsafe_memory_access=true -Darrow.memory.debug.allocator=false -Darrow.enable_null_check_for_get=false --add-opens=java.security.jgss/sun.security.jgss.krb5=ALL-UNNAMED --add-exports=java.security.jgss/sun.security.jgss=ALL-UNNAMED --add-exports=java.security.jgss/sun.security.jgss.spi=ALL-UNNAMED --add-exports=java.security.jgss/sun.security.krb5.internal=ALL-UNNAMED --add-exports=java.security.jgss/sun.security.krb5=ALL-UNNAMED
!ENTRY org.eclipse.jface 2 0 2022-11-14 10:00:26.271
!MESSAGE Keybinding conflicts occurred.  They may interfere with normal accelerator operation.
!SUBENTRY 1 org.eclipse.jface 2 0 2022-11-14 10:00:26.271
!MESSAGE A conflict occurred for CTRL++:
Binding(CTRL++,
    ParameterizedCommand(Command(org.eclipse.gef.zoom_in,Zoom In,
        Zoom In,
        Category(org.eclipse.gef.category.view,View,View,true),
        org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@3703a400,
        ,,true),null),
    org.eclipse.ui.defaultAcceleratorConfiguration,
    org.eclipse.ui.contexts.window,de,,system)
Binding(CTRL++,
    ParameterizedCommand(Command(org.eclipse.gef.zoom_in,Zoom In,
        Zoom In,
        Category(org.eclipse.gef.category.view,View,View,true),
        org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@3703a400,
        ,,true),null),
    org.eclipse.ui.defaultAcceleratorConfiguration,
    org.eclipse.ui.contexts.window,,,system)
!ENTRY org.eclipse.core.net 4 0 2022-11-14 10:00:31.855
!MESSAGE WinHttp.GetProxyForUrl for pac failed with error 'Das Handle ist ungĂĽltig.
' #6.

And the Windows console showed these Java errors (output shortened (...)):

Nov. 14, 2022 10:00:21 AM org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions
INFORMATION: Adding the extensions from bundle org.apache.cxf.cxf-rt-frontend-jaxrs (166) [org.apache.cxf.jaxrs.JAXRSBindingFactory]
Nov. 14, 2022 10:00:21 AM org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions
INFORMATION: Adding the extensions from bundle org.apache.cxf.cxf-rt-transports-http (170) [org.apache.cxf.transport.http.HTTPTransportFactory, org.apache.cxf.transport.http.HTTPWSDLExtensionLoader, org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder, org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder, org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider]
Nov. 14, 2022 10:00:21 AM org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions
INFORMATION: Adding the extensions from bundle org.apache.cxf.cxf-rt-transports-http-hc (171) [org.apache.cxf.transport.http.HTTPConduitFactory, org.apache.cxf.transport.ConduitInitiator]
Nov. 14, 2022 10:00:22 AM org.apache.cxf.bus.blueprint.NamespaceHandlerRegisterer register
INFORMATION: Aries Blueprint packages not available. So namespaces will not be registered
Nov. 14, 2022 10:00:22 AM org.apache.cxf.bus.blueprint.NamespaceHandlerRegisterer register
INFORMATION: Aries Blueprint packages not available. So namespaces will not be registered
ERROR    main WindowsDefenderExceptionHandler    PowerShell command powershell -inputformat none -outputformat text -NonInteractive -Command Get-MpComputerStatus -ErrorAction Stop | Select-Object -ExpandProperty AMServiceEnabled did not terminate successfully.
ERROR    main WindowsDefenderExceptionHandler    Stderr is:
ERROR    main WindowsDefenderExceptionHandler    Get-MpComputerStatus : Es ist ein allgemeiner Fehler aufgetreten, f?r den kein spezifischerer Fehlercode verf?gbar ist.
ERROR    main WindowsDefenderExceptionHandler    In Zeile:1 Zeichen:1
ERROR    main WindowsDefenderExceptionHandler    + Get-MpComputerStatus -ErrorAction Stop | Select-Object -ExpandPropert ...
ERROR    main WindowsDefenderExceptionHandler    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ERROR    main WindowsDefenderExceptionHandler        + CategoryInfo          : NotSpecified: (MSFT_MpComputerStatus:ROOT\Microsoft\...pComputerStatus) [Get-MpComputerS
ERROR    main WindowsDefenderExceptionHandler       tatus], CimException
ERROR    main WindowsDefenderExceptionHandler        + FullyQualifiedErrorId : HRESULT 0x800106ba,Get-MpComputerStatus
ERROR    main WindowsDefenderExceptionHandler
Nov. 14, 2022 10:00:30 AM org.apache.cxf.bus.blueprint.NamespaceHandlerRegisterer register
INFORMATION: Aries Blueprint packages not available. So namespaces will not be registered
ERROR    main DBDriverRegistry   Database driver wrapper creation failed for driver (H2) "H2".
ERROR    main DBDriverRegistry   Failed to load built-in database driver (H2) "H2" from extension org.knime.database.extensions.
java.lang.ExceptionInInitializerError
        at org.knime.database.driver.DBDriverRegistry.createDriverWrapper(DBDriverRegistry.java:446)
        at org.knime.database.driver.DBDriverRegistry.lambda$3(DBDriverRegistry.java:558)
        at org.knime.database.util.ExtensionPoints.loadExecutableExtensions(ExtensionPoints.java:94)
        at org.knime.database.driver.DBDriverRegistry.loadExtensionDrivers(DBDriverRegistry.java:545)
        at org.knime.database.driver.DBDriverRegistry.<init>(DBDriverRegistry.java:599)
        at org.knime.database.driver.DBDriverRegistry.<clinit>(DBDriverRegistry.java:216)
        at org.knime.database.extension.oracle.node.connector.OracleDBConnectorSettings.<init>(OracleDBConnectorSettings.java:80)
        at org.knime.database.extension.oracle.node.connector.OracleDBConnectorNodeModel.<init>(OracleDBConnectorNodeModel.java:66)
        at org.knime.database.extension.oracle.node.connector.OracleDBConnectorNodeFactory.createNodeModel(OracleDBConnectorNodeFactory.java:61)
        at org.knime.database.extension.oracle.node.connector.OracleDBConnectorNodeFactory.createNodeModel(OracleDBConnectorNodeFactory.java:1)
        at org.knime.core.node.NodeFactory.callCreateNodeModel(NodeFactory.java:520)
        at org.knime.core.node.Node.<init>(Node.java:307)
        at org.knime.core.node.workflow.WorkflowManager.addNodeAndApplyContext(WorkflowManager.java:871)
        at org.knime.core.ui.wrapper.WorkflowManagerWrapper.createAndAddNode(WorkflowManagerWrapper.java:140)
        at org.knime.workbench.editor2.commands.CreateNodeCommand.lambda$0(CreateNodeCommand.java:183)
        at org.knime.workbench.ui.async.AsyncUtil.wfmAsyncSwitch(AsyncUtil.java:130)
        at org.knime.workbench.editor2.commands.CreateNodeCommand.execute(CreateNodeCommand.java:182)
        at org.eclipse.gef.commands.CommandStack.execute(CommandStack.java:228)
        at org.knime.workbench.editor2.WorkflowEditorDropTargetListener.handleDrop(WorkflowEditorDropTargetListener.java:511)
        at org.knime.workbench.editor2.NodeDropTargetListener.handleDrop(NodeDropTargetListener.java:116)
        at org.eclipse.gef.dnd.AbstractTransferDropTargetListener.drop(AbstractTransferDropTargetListener.java:183)
        at org.eclipse.jface.util.DelegatingDropAdapter$3.run(DelegatingDropAdapter.java:227)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
        at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
        at org.eclipse.jface.util.DelegatingDropAdapter.drop(DelegatingDropAdapter.java:224)
        at org.eclipse.swt.dnd.DNDListener.handleEvent(DNDListener.java:94)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
        at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4209)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1043)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1067)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1052)
        at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:766)
        at org.eclipse.swt.dnd.DropTarget.Drop(DropTarget.java:467)
        at org.eclipse.swt.dnd.DropTarget.Drop_64(DropTarget.java:401)
        at org.eclipse.swt.dnd.DropTarget$1.method6(DropTarget.java:265)
        at org.eclipse.swt.internal.ole.win32.COMObject.callback6(COMObject.java:120)
        at org.eclipse.swt.internal.ole.win32.COM.DoDragDrop(Native Method)
        at org.eclipse.swt.dnd.DragSource.drag(DragSource.java:541)
        at org.eclipse.swt.dnd.DragSource.lambda$0(DragSource.java:380)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
        at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4209)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1043)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4026)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3626)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1157)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
        at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
        at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156)
        at org.knime.product.rcp.KNIMEApplication.start(KNIMEApplication.java:183)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1461)
        at org.eclipse.equinox.launcher.Main.main(Main.java:1434)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected java.lang.String java.lang.ClassLoader.findLibrary(java.lang.String) accessible: module java.base does not "opens java.lang" to unnamed module @2c5157c9
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
        at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
        at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
        at org.knime.database.driver.DBDriverRegistry$DriverClassLoader.<clinit>(DBDriverRegistry.java:120)
        ... 66 more

...

ERROR    main DBDriverRegistry   Database driver wrapper creation failed for driver (built-in-oracle-19.14.0) "Driver for Oracle v. 19.14.0".
ERROR    main DBDriverRegistry   Failed to load built-in database driver (built-in-oracle-19.14.0) "Driver for Oracle v. 19.14.0" from extension org.knime.database.extensions.oracle.driver.
java.lang.NoClassDefFoundError: Could not initialize class org.knime.database.driver.DBDriverRegistry$DriverClassLoader
        at org.knime.database.driver.DBDriverRegistry.createDriverWrapper(DBDriverRegistry.java:446)
        at org.knime.database.driver.DBDriverRegistry.lambda$3(DBDriverRegistry.java:558)
        at org.knime.database.util.ExtensionPoints.loadExecutableExtensions(ExtensionPoints.java:94)
        at org.knime.database.driver.DBDriverRegistry.loadExtensionDrivers(DBDriverRegistry.java:545)
        at org.knime.database.driver.DBDriverRegistry.<init>(DBDriverRegistry.java:599)
        at org.knime.database.driver.DBDriverRegistry.<clinit>(DBDriverRegistry.java:216)
        at org.knime.database.extension.oracle.node.connector.OracleDBConnectorSettings.<init>(OracleDBConnectorSettings.java:80)
        at org.knime.database.extension.oracle.node.connector.OracleDBConnectorNodeModel.<init>(OracleDBConnectorNodeModel.java:66)
        at org.knime.database.extension.oracle.node.connector.OracleDBConnectorNodeFactory.createNodeModel(OracleDBConnectorNodeFactory.java:61)
        at org.knime.database.extension.oracle.node.connector.OracleDBConnectorNodeFactory.createNodeModel(OracleDBConnectorNodeFactory.java:1)
        at org.knime.core.node.NodeFactory.callCreateNodeModel(NodeFactory.java:520)
        at org.knime.core.node.Node.<init>(Node.java:307)
        at org.knime.core.node.workflow.WorkflowManager.addNodeAndApplyContext(WorkflowManager.java:871)
        at org.knime.core.ui.wrapper.WorkflowManagerWrapper.createAndAddNode(WorkflowManagerWrapper.java:140)
        at org.knime.workbench.editor2.commands.CreateNodeCommand.lambda$0(CreateNodeCommand.java:183)
        at org.knime.workbench.ui.async.AsyncUtil.wfmAsyncSwitch(AsyncUtil.java:130)
        at org.knime.workbench.editor2.commands.CreateNodeCommand.execute(CreateNodeCommand.java:182)
        at org.eclipse.gef.commands.CommandStack.execute(CommandStack.java:228)
        at org.knime.workbench.editor2.WorkflowEditorDropTargetListener.handleDrop(WorkflowEditorDropTargetListener.java:511)
        at org.knime.workbench.editor2.NodeDropTargetListener.handleDrop(NodeDropTargetListener.java:116)
        at org.eclipse.gef.dnd.AbstractTransferDropTargetListener.drop(AbstractTransferDropTargetListener.java:183)
        at org.eclipse.jface.util.DelegatingDropAdapter$3.run(DelegatingDropAdapter.java:227)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
        at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
        at org.eclipse.jface.util.DelegatingDropAdapter.drop(DelegatingDropAdapter.java:224)
        at org.eclipse.swt.dnd.DNDListener.handleEvent(DNDListener.java:94)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
        at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4209)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1043)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1067)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1052)
        at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:766)
        at org.eclipse.swt.dnd.DropTarget.Drop(DropTarget.java:467)
        at org.eclipse.swt.dnd.DropTarget.Drop_64(DropTarget.java:401)
        at org.eclipse.swt.dnd.DropTarget$1.method6(DropTarget.java:265)
        at org.eclipse.swt.internal.ole.win32.COMObject.callback6(COMObject.java:120)
        at org.eclipse.swt.internal.ole.win32.COM.DoDragDrop(Native Method)
        at org.eclipse.swt.dnd.DragSource.drag(DragSource.java:541)
        at org.eclipse.swt.dnd.DragSource.lambda$0(DragSource.java:380)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
        at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4209)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1043)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4026)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3626)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1157)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
        at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
        at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156)
        at org.knime.product.rcp.KNIMEApplication.start(KNIMEApplication.java:183)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1461)
        at org.eclipse.equinox.launcher.Main.main(Main.java:1434)
WARN     main ServerDBConnectorSettings  Please install the KNIME JDBC Driver For Oracle Database plug-in or register your own driver. For more information on how to install the plug-in see https://docs.knime.com/latest/db_extension_guide/index.html#db_plugin.
WARN     main Node       Please register a compatible driver via the KNIME preference page. (For details see the log file)

Taking a look at java.lang.NoClassDefFoundError: Could not initialize class org.knime.database.driver.DBDriverRegistry$DriverClassLoader, I cannot understand why this problem arises. There is a folder called plugins\org.knime.database_4.6.0.v202205251236 which contains a JAR file named knime-db-core.jar. Inside this JAR file, there is a folder path \org\knime\database\driver which contains a subclass file DBDriverRegistry$DriverClassLoader.class.

Why is it not found and initialised during execution?

The CMD file was created according to the information that can be found in the knime.ini file. We suppose that something with the Java classpath is still not quite right in order to make the program work properly. Or can the solution be found somewhere else? Can this problem ever be solved or is it impossible to use KNIME in such a way? What can be done to make KNIME work under such circumstances?

Hi @MgntMoe, and welcome to the community!

Indeed, an interesting problem you are facing. Great that this is a way to circumvent the restriction! Interesting that *.exe are deemed less save that *.bat scripts :thinking: But hey, as long as it works. As you already noticed, however, this might come with a few limitations, e.g. that the DB Connector don’t work. The rest seems to work fine.

I tried starting KNIME in the same fashion you did, with a start-up script and observed the same error. Starting KNIME the usual way works fine. As you do, I also suspect, that some path is not properly set - adding the driver as suggested in the error message doesn’t work, either, with a similar error message.

A few things to note:

  • Depending on how you will want to use KNIME, you might want to increase the memory KNIME is allowed to use. You can set the -Xmx parameter from -Xmx2048m to e.g. -Xmx=8G for 8 Gb.
  • KNIME comes with its own bundled java. It might save a headache or two to use this version, as this is what we test. You can change the SET ... lines to do so
SET JAVA_HOME=<knime installation folder>\plugins\org.knime.binary.jre.win32.x86_64_17.0.3.20220621\jre\bin
SET PATH=<knime installation folder>\plugins\org.knime.binary.jre.win32.x86_64_17.0.3.20220621\jre\bin;%PATH%

(adjusting the <knime installation folder> to where you unpacked KNIME>

That being said, maybe we can attack the issue from another angle: where does the *.exe restriction come from and what does KNIME have to fulfill, so that knime.exe is allowed to be executed? Are there any arguments your IT-Department (as I’m suspecting they cause the restriction) wants to hear to lift the ban?

Kind regards,
Lukas

Trying to start knime.exe leads to a message that tells me the following:

Execution of application is prohibited by company policy!
'c:\users\username\downloads\knime_4.6.3\knime.exe'

Replacing the two lines …

SET JAVA_HOME=C:\Program Files\Java\OracleJDK\17-0-2
SET PATH=C:\Program Files\Java\Oracle\17-0-2\bin;%PATH%

… with …

SET JAVA_HOME=C:\Users\username\Downloads\knime_4.6.3\plugins\org.knime.binary.jre.win32.x86_64_17.0.3.20220621\jre\bin
SET PATH=C:\Users\username\Downloads\knime_4.6.3\plugins\org.knime.binary.jre.win32.x86_64_17.0.3.20220621\jre\bin;%PATH%

… gives back the following message:

Execution of application is prohibited by company policy!
'c:\users\username\downloads\knime_4.6.3\plugins\org.knime.binary.jre.win32.x86_64_17.0.3.20220621\jre\bin\java.exe'

We could request another virtual desktop for ourselves in order to be able to start EXE files but this would come with a lot of shortcomings, for example with a lack of support that we desperately need. Of course, using two virtual desktops can be a “solution” but it would be very tedious for us to “solve” our problem this way. The best way would be to start KNIME with a CMD file.

Another way would be to ask the company to allow the execution of knime.exe but it can be a very long way until our wish is fulfilled. We are external employees of a bank. Both of these factors make things even more complicated.

Edit: Writing -Xmx=8G instead of -Xmx2048m does not help either.

@MgntMoe any specific reason why you run this from a “download” folder. Would it be an option to download the ZIP version of KNIME and try to start this from a different folder?

You must pass the Java argumet (e.g. --add-opens) before the -jar parameter. Otherwise they will be passed to the application instead to the Java process. This is why you are getting the errors in the DBDriverRegistry.

3 Likes

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.