Error when run java -jar metabase.jar

hi, I am trying to run metabase on my local via JAR file.

1st attempt, it works!
On 2nd attempt, I download a new jar and run the same command to spin .jar shows the error as below.

command: java -jar metabase.jar

Warning: protocol #'java-time.core/Amount is overwriting function abs
WARNING: abs already refers to: #'clojure.core/abs in namespace: java-time.core, being replaced by: #'java-time.core/abs
WARNING: abs already refers to: #'clojure.core/abs in namespace: java-time, being replaced by: #'java-time/abs
Exception in thread "main" java.lang.Error: Circular loading of installed providers detected
        at java.nio.file.spi.FileSystemProvider.installedProviders(Unknown Source)
        at java.nio.file.Paths.get(Unknown Source)
        at org.apache.logging.log4j.core.util.Source.toFile(Source.java:55)
        at org.apache.logging.log4j.core.util.Source.<init>(Source.java:142)
        at org.apache.logging.log4j.core.config.ConfigurationSource.<init>(ConfigurationSource.java:139)
        at org.apache.logging.log4j.core.config.ConfigurationSource.getConfigurationSource(ConfigurationSource.java:388)
        at org.apache.logging.log4j.core.config.ConfigurationSource.fromResource(ConfigurationSource.java:366)
        at org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:554)
        at org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:483)
        at org.apache.logging.log4j.core.config.ConfigurationFactory.getConfiguration(ConfigurationFactory.java:325)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:690)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:711)
        at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:253)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
        at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:137)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:55)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:47)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:33)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
        at com.mchange.v2.log.slf4j.Slf4jMLog.getMLogger(Slf4jMLog.java:75)
        at com.mchange.v2.log.MLog.getMLogger(MLog.java:398)
        at com.mchange.v2.log.MLog.getLogger(MLog.java:281)
        at com.mchange.v2.log.MLog.refreshConfig(MLog.java:157)
        at com.mchange.v2.log.MLog.<clinit>(MLog.java:52)
        at com.mchange.v2.naming.JavaBeanReferenceMaker.<clinit>(JavaBeanReferenceMaker.java:51)
        at com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase.<clinit>(PoolBackedDataSourceBase.java:263)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at clojure.lang.RT.classForName(RT.java:2209)
        at clojure.lang.RT.classForName(RT.java:2218)
        at metabase.db.connection_pool_setup$fn__20052.<clinit>(connection_pool_setup.clj:20)
        at metabase.db.connection_pool_setup__init.load(Unknown Source)
        at metabase.db.connection_pool_setup__init.<clinit>(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at clojure.lang.RT.classForName(RT.java:2209)
        at clojure.lang.RT.classForName(RT.java:2218)
        at clojure.lang.RT.loadClassForName(RT.java:2237)
        at clojure.lang.RT.load(RT.java:449)
        at clojure.lang.RT.load(RT.java:424)
        at clojure.core$load$fn__6908.invoke(core.clj:6161)
        at clojure.core$load.invokeStatic(core.clj:6160)
        at clojure.core$load.doInvoke(core.clj:6144)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invokeStatic(core.clj:5933)
        at clojure.core$load_one.invoke(core.clj:5928)
        at clojure.core$load_lib$fn__6850.invoke(core.clj:5975)
        at clojure.core$load_lib.invokeStatic(core.clj:5974)
        at clojure.core$load_lib.doInvoke(core.clj:5953)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invokeStatic(core.clj:669)
        at clojure.core$load_libs.invokeStatic(core.clj:6016)
        at clojure.core$load_libs.doInvoke(core.clj:6000)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invokeStatic(core.clj:669)
        at clojure.core$require.invokeStatic(core.clj:6038)
        at clojure.core$require.doInvoke(core.clj:6038)
        at clojure.lang.RestFn.invoke(RestFn.java:436)
        at metabase.db.connection$loading__6789__auto____20106.invoke(connection.clj:1)
        at metabase.db.connection__init.load(Unknown Source)
        at metabase.db.connection__init.<clinit>(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at clojure.lang.RT.classForName(RT.java:2209)
        at clojure.lang.RT.classForName(RT.java:2218)
        at clojure.lang.RT.loadClassForName(RT.java:2237)
        at clojure.lang.RT.load(RT.java:449)
        at clojure.lang.RT.load(RT.java:424)
        at clojure.core$load$fn__6908.invoke(core.clj:6161)
        at clojure.core$load.invokeStatic(core.clj:6160)
        at clojure.core$load.doInvoke(core.clj:6144)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invokeStatic(core.clj:5933)
        at clojure.core$load_one.invoke(core.clj:5928)
        at clojure.core$load_lib$fn__6850.invoke(core.clj:5975)
        at clojure.core$load_lib.invokeStatic(core.clj:5974)
        at clojure.core$load_lib.doInvoke(core.clj:5953)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invokeStatic(core.clj:669)
        at clojure.core$load_libs.invokeStatic(core.clj:6016)
        at clojure.core$load_libs.doInvoke(core.clj:6000)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invokeStatic(core.clj:669)
        at clojure.core$require.invokeStatic(core.clj:6038)
        at clojure.core$require.doInvoke(core.clj:6038)
        at clojure.lang.RestFn.invoke(RestFn.java:457)
        at metabase.db$loading__6789__auto____35568.invoke(db.clj:1)
        at metabase.db__init.load(Unknown Source)
        at metabase.db__init.<clinit>(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at clojure.lang.RT.classForName(RT.java:2209)
        at clojure.lang.RT.classForName(RT.java:2218)
        at clojure.lang.RT.loadClassForName(RT.java:2237)
        at clojure.lang.RT.load(RT.java:449)
        at clojure.lang.RT.load(RT.java:424)
        at clojure.core$load$fn__6908.invoke(core.clj:6161)
        at clojure.core$load.invokeStatic(core.clj:6160)
        at clojure.core$load.doInvoke(core.clj:6144)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invokeStatic(core.clj:5933)
        at clojure.core$load_one.invoke(core.clj:5928)
        at clojure.core$load_lib$fn__6850.invoke(core.clj:5975)
        at clojure.core$load_lib.invokeStatic(core.clj:5974)
        at clojure.core$load_lib.doInvoke(core.clj:5953)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invokeStatic(core.clj:669)
        at clojure.core$load_libs.invokeStatic(core.clj:6016)
        at clojure.core$load_libs.doInvoke(core.clj:6000)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invokeStatic(core.clj:669)
        at clojure.core$require.invokeStatic(core.clj:6038)
        at clojure.core$require.doInvoke(core.clj:6038)
        at clojure.lang.RestFn.invoke(RestFn.java:3894)
        at metabase.core$loading__6789__auto____83699.invoke(core.clj:1)
        at metabase.core__init.load(Unknown Source)
        at metabase.core__init.<clinit>(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at clojure.lang.RT.classForName(RT.java:2209)
        at clojure.lang.RT.classForName(RT.java:2218)
        at clojure.lang.RT.loadClassForName(RT.java:2237)
        at clojure.lang.RT.load(RT.java:449)
        at clojure.lang.RT.load(RT.java:424)
        at clojure.core$load$fn__6908.invoke(core.clj:6161)
        at clojure.core$load.invokeStatic(core.clj:6160)
        at clojure.core$load.doInvoke(core.clj:6144)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.lang.Var.invoke(Var.java:384)
        at clojure.lang.Util.loadWithClass(Util.java:251)
        at metabase.core.<clinit>(Unknown Source)

Hi @amzar
I don't know how you're running Metabase, or which version you are using, but there's something bad in your environment.

Hi @flamber ,

thanks for your response. hmmm, i just downloaded it from here https://metabase.com/start/oss/jar then run it. what else should I check in my environment?

@amzar Then startup Metabase and post "Diagnostic Info" from Admin > Troubleshooting.

I am getting same error. Just freshly installed JRE and downloaded the metabase.jar file

Install Java 11: https://www.metabase.com/docs/latest/operations-guide/java-versions.html

1 Like

Hi @flamber
I'm struggling with the same problem and have found many posts about it recently, but in all of them you mention the same link that no longer works. This link replaces it ?

And can the article be improved with more details ? For example there is no mention of licenses, is Eclipse Temurin free to use in a commercial environment ? For many users, Java is a big chaos, terms like SE / JDK / JRE are a big mystery :exploding_head:

@CZvacko There's been some changes to the website a couple of days ago, so they forgot a redirect.

The article explicitly says to use Java 11 JRE with HotSpot JVM for x64 - other than that, you can use the distribution that you prefer.

Have a look at distribution website you're interested in to figure out the license: https://adoptium.net/docs/faq

@flamber

Yes, I've opened the link to adoptium.net, but that leads to other questions, firstly, I can't find any term "HotSpot JVM" on that website. By default, I see a link to download "Latest LTS Release (jdk-17.0.4+8)". Since it says jdk, but the Metabase article says JRE, I'll ignore it and open "Other Platforms and Versions", there I use the filter and select Package Type = JRE, but there it also offers version 18, but the article says 11. So should I bother with the lower version or go straight to 18, what's a better approach for the future ? Is it expected that Metabase will require it ? Eventually it will start downloading (now, too late, the file name says HotSpot but not JVM), is this the correct file ?

That's why I'm writing that the Metabase article needs to be improved...

@CZvacko You should use Docker if you are unsure which Java to select. You should use LTS versions. And I would recommend the same version as we ship in Docker, Java 11.

Not every distribution provides other JVMs than HotSpot. It's difficult to write documentation for every single distribution, and every time they make changes to their websites.

Hi
I had the same error
To solve it i needed to change from java 8 to java 11
i hope to help you
Thanks