Search code examples
javaoraclejdbcdriverknime

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


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?


Solution

  • This post in the KNIME forum helped to solve the problem.

    My solution for KNIME 4.6.3 is 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 --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.base/sun.security.ssl=ALL-UNNAMED --add-opens=java.base/sun.security.util=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xerces.internal.parsers=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xerces.internal.util=ALL-UNNAMED --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 -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
    
    pause
    

    It does not work for the most recent version KNIME 4.7.0 but with a few adaptions, we should be able to start and use this version as well.