Skip to content

KubernetesCredentialFactory is not loaded properly in the Docker image #9802

@philipsens

Description

@philipsens

Current Behavior

Class can't be found. This might be because all dependencies are copied to the /opt/frank/drivers/ folder.

Expected Behavior

Dependency and class should be found.

Environment Information

FF! 9.4.0-20251021.042334: frank2example-k8s-secrets
Running on frank2example-k8s-secrets-frankframework-658f849d4f-vwhzk using Apache Tomcat/10.1.48
Java Version: OpenJDK Runtime Environment (21.0.8+9-LTS)
Heap size: 155.4 MiB, total JVM memory: 230.5 MiB
Free memory: 75.0 MiB, max memory: 792.7 MiB
Free disk space: 88.3 GiB, total disk space: 146.1 GiB
Up since: 2025-10-21 11:14:04, timezone: Etc/UTC

Steps To Reproduce

Run frank2example on Kubernetes with this property:

    credentialFactory.class: "org.frankframework.credentialprovider.KubernetesCredentialFactory"

Configuration

Input

No response

What database are you using?

No response

What browsers are you seeing the problem on?

No response

Relevant Log Output

21-Oct-2025 09:16:55.373 WARNING [main] org.frankframework.credentialprovider.CredentialFactory.tryFactory Cannot instantiate CredentialFactory [org.frankframework.credentialprovider.KubernetesCredentialFactory] (io.fabric8.kubernetes.client.KubernetesClientException): An error has occurred.
	io.fabric8.kubernetes.client.KubernetesClientException: An error has occurred.
		at io.fabric8.kubernetes.client.KubernetesClientException.launderThrowable(KubernetesClientException.java:129)
		at io.fabric8.kubernetes.client.KubernetesClientException.launderThrowable(KubernetesClientException.java:122)
		at io.fabric8.kubernetes.client.KubernetesClientBuilder.<init>(KubernetesClientBuilder.java:61)
		at org.frankframework.credentialprovider.KubernetesCredentialFactory.initialize(KubernetesCredentialFactory.java:89)
		at org.frankframework.credentialprovider.CredentialFactory.tryFactory(CredentialFactory.java:98)
		at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
		at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
		at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Unknown Source)
		at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
		at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
		at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
		at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
		at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
		at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source)
		at org.frankframework.credentialprovider.CredentialFactory.tryFactories(CredentialFactory.java:90)
		at org.frankframework.credentialprovider.CredentialFactory.<init>(CredentialFactory.java:70)
		at org.frankframework.credentialprovider.CredentialFactory.getInstance(CredentialFactory.java:56)
		at org.frankframework.credentialprovider.CredentialFactory.hasCredential(CredentialFactory.java:110)
		at org.frankframework.credentialprovider.CredentialProvidingPropertySource.getProperty(CredentialProvidingPropertySource.java:51)
		at org.apache.tomcat.util.IntrospectionUtils.getProperty(IntrospectionUtils.java:388)
		at org.apache.tomcat.util.IntrospectionUtils.replaceProperties(IntrospectionUtils.java:342)
		at org.apache.tomcat.util.IntrospectionUtils.replaceProperties(IntrospectionUtils.java:308)
		at org.apache.tomcat.util.digester.Digester.updateBodyText(Digester.java:2033)
		at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:966)
		at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source)
		at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
		at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
		at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
		at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
		at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
		at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
		at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
		at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
		at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
		at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1506)
		at org.apache.catalina.startup.ContextConfig.processContextConfig(ContextConfig.java:729)
		at org.apache.catalina.startup.ContextConfig.contextConfig(ContextConfig.java:594)
		at org.apache.catalina.startup.ContextConfig.init(ContextConfig.java:937)
		at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299)
		at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:109)
		at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389)
		at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:123)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:155)
		at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:597)
		at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:569)
		at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
		at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1123)
		at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1922)
		at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
		at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
		at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:81)
		at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
		at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1034)
		at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:419)
		at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1618)
		at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:300)
		at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:109)
		at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389)
		at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:336)
		at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:774)
		at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:770)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1201)
		at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1191)
		at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
		at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:81)
		at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
		at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:747)
		at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:201)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		at org.apache.catalina.core.StandardService.startInternal(StandardService.java:410)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:868)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		at org.apache.catalina.startup.Catalina.start(Catalina.java:758)
		at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
		at java.base/java.lang.reflect.Method.invoke(Unknown Source)
		at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342)
		at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)
	Caused by: java.lang.ClassNotFoundException: io.fabric8.kubernetes.client.impl.KubernetesClientImpl
		at java.base/java.net.URLClassLoader.findClass(Unknown Source)
		at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
		at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
		at io.fabric8.kubernetes.client.KubernetesClientBuilder.<init>(KubernetesClientBuilder.java:59)
		... 76 more
21-Oct-2025 09:16:55.376 INFO [main] org.frankframework.credentialprovider.CredentialFactory.tryFactory trying to configure CredentialFactory [org.frankframework.credentialprovider.FileSystemCredentialFactory]
21-Oct-2025 09:16:55.376 WARNING [main] org.frankframework.credentialprovider.CredentialFactory.tryFactory Cannot instantiate CredentialFactory [org.frankframework.credentialprovider.FileSystemCredentialFactory] (java.lang.IllegalStateException): No property [credentialFactory.filesystem.root] found
	java.lang.IllegalStateException: No property [credentialFactory.filesystem.root] found
		at org.frankframework.credentialprovider.FileSystemCredentialFactory.initialize(FileSystemCredentialFactory.java:55)
		at org.frankframework.credentialprovider.CredentialFactory.tryFactory(CredentialFactory.java:98)
		at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
		at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
		at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Unknown Source)
		at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
		at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
		at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
		at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
		at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
		at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source)
		at org.frankframework.credentialprovider.CredentialFactory.tryFactories(CredentialFactory.java:90)
		at org.frankframework.credentialprovider.CredentialFactory.<init>(CredentialFactory.java:73)
		at org.frankframework.credentialprovider.CredentialFactory.getInstance(CredentialFactory.java:56)
		at org.frankframework.credentialprovider.CredentialFactory.hasCredential(CredentialFactory.java:110)
		at org.frankframework.credentialprovider.CredentialProvidingPropertySource.getProperty(CredentialProvidingPropertySource.java:51)
		at org.apache.tomcat.util.IntrospectionUtils.getProperty(IntrospectionUtils.java:388)
		at org.apache.tomcat.util.IntrospectionUtils.replaceProperties(IntrospectionUtils.java:342)
		at org.apache.tomcat.util.IntrospectionUtils.replaceProperties(IntrospectionUtils.java:308)
		at org.apache.tomcat.util.digester.Digester.updateBodyText(Digester.java:2033)
		at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:966)
		at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source)
		at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
		at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
		at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
		at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
		at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
		at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
		at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
		at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
		at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
		at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1506)
		at org.apache.catalina.startup.ContextConfig.processContextConfig(ContextConfig.java:729)
		at org.apache.catalina.startup.ContextConfig.contextConfig(ContextConfig.java:594)
		at org.apache.catalina.startup.ContextConfig.init(ContextConfig.java:937)
		at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299)
		at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:109)
		at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389)
		at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:123)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:155)
		at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:597)
		at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:569)
		at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
		at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1123)
		at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1922)
		at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
		at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
		at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:81)
		at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
		at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1034)
		at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:419)
		at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1618)
		at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:300)
		at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:109)
		at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389)
		at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:336)
		at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:774)
		at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:770)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1201)
		at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1191)
		at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
		at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:81)
		at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
		at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:747)
		at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:201)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		at org.apache.catalina.core.StandardService.startInternal(StandardService.java:410)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:868)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		at org.apache.catalina.startup.Catalina.start(Catalina.java:758)
		at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
		at java.base/java.lang.reflect.Method.invoke(Unknown Source)
		at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342)
		at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)

Anything else?

No response

Metadata

Metadata

Assignees

Type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions