Scala错误:java.sql.SQLException:未找到适合jdbc的驱动程序:方解石:

Scala错误:java.sql.SQLException:未找到适合jdbc的驱动程序:方解石:,scala,jdbc,apache-calcite,Scala,Jdbc,Apache Calcite,我使用maven汇编插件创建了一个Scala应用程序的jar。现在,当我使用java-jar path\to\jar\myapp.jar执行jar时,它抛出以下错误: Exception in thread "main" Exception in thread "Timer-0" java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:calcite: at org.

我使用maven汇编插件创建了一个Scala应用程序的jar。现在,当我使用java-jar path\to\jar\myapp.jar执行jar时,它抛出以下错误:

Exception in thread "main" Exception in thread "Timer-0" java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:calcite:
        at org.apache.calcite.tools.Frameworks.withPrepare(Frameworks.java:159)
        at org.apache.calcite.tools.Frameworks.withPlanner(Frameworks.java:114)
        Caused by: java.sql.SQLException: No suitable driver found for jdbc:calcite:
        at java.sql.DriverManager.getConnection(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at org.apache.calcite.tools.Frameworks.withPrepare(Frameworks.java:153)
        ... 17 more
java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:calcite:
        at org.apache.calcite.tools.Frameworks.withPrepare(Frameworks.java:159)
        at org.apache.calcite.tools.Frameworks.withPlanner(Frameworks.java:114)
        at java.util.TimerThread.mainLoop(Unknown Source)
        at java.util.TimerThread.run(Unknown Source)
Caused by: java.sql.SQLException: No suitable driver found for jdbc:calcite:
        at java.sql.DriverManager.getConnection(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at org.apache.calcite.tools.Frameworks.withPrepare(Frameworks.java:153)
        ... 8 more
当我通过IDE IntelliJ运行应用程序时,它工作正常

谁能告诉我为什么会这样

EDIT1:我打开了jar文件,看到方解石核心jar出现在org/apache/calcite jar中


编辑2:我试着改变方解石核心的版本。我之前使用的是1.15.0,现在使用的是1.18.0,但错误仍然存在

Apache Flink中似乎有一个bug-

尽管我还没有找到方解石核心驱动程序问题的解决方案,但我还是设法找到了另一种执行jar的方法

我在pom.xml中添加了以下两个插件。maven依赖插件将所有相关的依赖jar复制到一个lib文件夹中,maven jar插件生成一个可执行jar文件

                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <configuration>
                    <outputDirectory>${project.build.directory}/lib</outputDirectory>
                    <excludeTransitive>false</excludeTransitive>
                    <stripVersion>false</stripVersion>
                </configuration>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>com.example.MainClass</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

注意:添加com.example.MainClass将使manifest.mf知道主类是什么

你能打开你的jar文件吗?应该可以使用任何可以提取zip文件的应用程序打开它,并检查里面是否有目录org/apache/calcite?calcite核心jar在我的类路径中。根据你的说法,它是如何出现在类路径上的?错误表明不是,因为您使用的是java-jar-path\to\jar\myapp.jar,所以应用程序将只使用META-INF/manifest.mf中定义的类路径,而不使用任何定义类路径的外部方法。例如,在环境变量CLASSPATH中使用它将不起作用,因为-jar选项不使用它。你是对的。在类路径中是否有它并不重要。但是我打开了jar文件并检查了org/apache/calcite目录。它就在那里。让我困惑的是,当我在IDE上运行它时,它工作了,方解石核心被检测到了,但当我使用Maven打包并运行它时,它就不工作了。