Skip to content

ClassNotFoundException OracleXADataSource/OracleDataSource using IDELauncher with Keycloak 26.0.0 #33627

@rene6502

Description

Before reporting an issue

  • I have read and understood the above terms for submitting issues, and I understand that my issue may be closed without action if I do not follow them.

Area

dependencies

Describe the bug

I'm using the IDELauncher class with the server's pom.xml to start Keycloak in the Eclipse IDE.
This setup was working fine with previous Keycloak versions.
However, since Keycloak 26.0.0, it no longer works out of the box.

The startup process fails with two ClassNotFoundException errors:

  • oracle.jdbc.xa.OracleXADataSource
  • oracle.jdbc.datasource.impl.OracleDataSource

Solution:
To resolve this, I added the following dependency to the pom.xml file:

<dependency>
  <groupId>com.oracle.database.jdbc</groupId>
  <artifactId>ojdbc8</artifactId>
</dependency>

After including this, the ClassNotFoundException errors were resolved, and Keycloak 26.0.0 starts as expected.

Version

26.0.0

Regression

  • The issue is a regression

Expected behavior

Keycloak should start in IDE without Oracle jdbc driver since only H2 is used.

Actual behavior

Keycloak does not start in IDE

How to Reproduce?

Start Keycloak 26.0.0 in Eclipse IDE.

Anything else?

pom.xml

Full log:

Press [�[94me�[39m] to edit command line args (currently '�[32mstart-dev�[39m'), [�[94mh�[39m] for more options>
�[94mTests paused�[39m
Press [�[94me�[39m] to edit command line args (currently '�[32mstart-dev�[39m'), [�[94mr�[39m] to resume testing, [�[94mh�[39m] for more options>
Press [�[94me�[39m] to edit command line args (currently '�[32mstart-dev�[39m'), [�[94mr�[39m] to resume testing, [�[94mo�[39m] Toggle test output, [�[94mh�[39m] for more options>
2024-10-07 08:24:10,375 WARN  [io.quarkus.deployment.configuration] (main) Configuration property 'quarkus.package.type' has been deprecated and replaced by: [quarkus.package.jar.enabled, quarkus.package.jar.type, quarkus.native.enabled, quarkus.native.sources-only]
2024-10-07 08:24:10,375 WARN  [io.quarkus.deployment.configuration] (main) Configuration property 'quarkus.package.user-providers-directory' has been deprecated and replaced by: [quarkus.package.jar.user-providers-directory]
2024-10-07 08:24:10,382 WARN  [io.quarkus.deployment.configuration] (main) Configuration property 'quarkus.package.type' has been deprecated and replaced by: [quarkus.package.jar.enabled, quarkus.package.jar.type, quarkus.native.enabled, quarkus.native.sources-only]
2024-10-07 08:24:10,383 WARN  [io.quarkus.deployment.configuration] (main) Configuration property 'quarkus.package.user-providers-directory' has been deprecated and replaced by: [quarkus.package.jar.user-providers-directory]
2024-10-07 08:24:10,389 WARN  [io.quarkus.deployment.configuration] (main) Configuration property 'quarkus.package.type' has been deprecated and replaced by: [quarkus.package.jar.enabled, quarkus.package.jar.type, quarkus.native.enabled, quarkus.native.sources-only]
2024-10-07 08:24:10,389 WARN  [io.quarkus.deployment.configuration] (main) Configuration property 'quarkus.package.user-providers-directory' has been deprecated and replaced by: [quarkus.package.jar.user-providers-directory]
2024-10-07 08:24:10,410 WARN  [io.quarkus.deployment.configuration] (main) Configuration property 'quarkus.package.type' has been deprecated and replaced by: [quarkus.package.jar.enabled, quarkus.package.jar.type, quarkus.native.enabled, quarkus.native.sources-only]
2024-10-07 08:24:10,410 WARN  [io.quarkus.deployment.configuration] (main) Configuration property 'quarkus.package.user-providers-directory' has been deprecated and replaced by: [quarkus.package.jar.user-providers-directory]
2024-10-07 08:24:12,797 WARN  [io.quarkus.deployment.steps.RegisterForReflectionBuildStep] (build-46) Failed to load Class oracle.jdbc.xa.OracleXADataSource: java.lang.ClassNotFoundException: oracle.jdbc.xa.OracleXADataSource
	at io.quarkus.launcher.RuntimeLaunchClassLoader.findClass(RuntimeLaunchClassLoader.java:25)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:593)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:533)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:481)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:533)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:481)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:534)
	at java.base/java.lang.Class.forName(Class.java:513)
	at io.quarkus.deployment.steps.RegisterForReflectionBuildStep.registerClass(RegisterForReflectionBuildStep.java:132)
	at io.quarkus.deployment.steps.RegisterForReflectionBuildStep.build(RegisterForReflectionBuildStep.java:85)
	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
	at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)
	at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
	at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
	at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2516)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2495)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1521)
	at java.base/java.lang.Thread.run(Thread.java:1583)
	at org.jboss.threads.JBossThread.run(JBossThread.java:483)

2024-10-07 08:24:12,802 WARN  [io.quarkus.deployment.steps.RegisterForReflectionBuildStep] (build-46) Failed to load Class oracle.jdbc.datasource.impl.OracleDataSource: java.lang.ClassNotFoundException: oracle.jdbc.datasource.impl.OracleDataSource
	at io.quarkus.launcher.RuntimeLaunchClassLoader.findClass(RuntimeLaunchClassLoader.java:25)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:593)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:533)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:481)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:533)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:481)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:534)
	at java.base/java.lang.Class.forName(Class.java:513)
	at io.quarkus.deployment.steps.RegisterForReflectionBuildStep.registerClass(RegisterForReflectionBuildStep.java:132)
	at io.quarkus.deployment.steps.RegisterForReflectionBuildStep.build(RegisterForReflectionBuildStep.java:85)
	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
	at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)
	at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
	at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
	at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2516)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2495)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1521)
	at java.base/java.lang.Thread.run(Thread.java:1583)
	at org.jboss.threads.JBossThread.run(JBossThread.java:483)

2024-10-07 08:24:14,620 WARN  [io.quarkus.deployment.steps.ClassTransformingBuildStep] (build-50) Could not remove configured resources from the following artifacts as they were not found in the model: {com.oracle.database.jdbc:ojdbc11::jar=[oracle/nativeimage/CharacterSetFeature.class]}
2024-10-07 08:24:18,073 WARN  [org.keycloak.quarkus.runtime.cli.Picocli] (Quarkus Main Thread) The following run time options were found, but will be ignored during build time: kc.spi-hostname-v2-hostname, kc.spi-theme-folder-dir

2024-10-07 08:24:18,490 INFO  [io.quarkus.deployment.dev.IsolatedDevModeMain] (main) Attempting to start live reload endpoint to recover from previous Quarkus startup failure
ERROR: Unexpected error when starting the server in (development) mode
ERROR: Failed to start quarkus
ERROR: oracle/sql/CharacterSet
ERROR: oracle.sql.CharacterSet
For more details run the same command passing the '--verbose' option. Also you can use '--help' to see the details about the usage of the particular command.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions