H2 java.sql.SQLException:找不到合适的驱动程序

Posted

技术标签:

【中文标题】H2 java.sql.SQLException:找不到合适的驱动程序【英文标题】:H2 java.sql.SQLException: No suitable driver found 【发布时间】:2014-05-09 22:37:21 【问题描述】:

我试图通过调用 ANT 脚本从 maven 调用 org.h2.tools.RunScript 类。

maven 看起来像 ...

         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-antrun-plugin</artifactId>
           <version>1.3</version>
           <executions>
             <execution>
               <phase>validate</phase>
               <goals>
                 <goal>run</goal>
               </goals>
               <configuration>
                    <tasks>
            <property name="compile_classpath" refid="maven.compile.classpath"/>
            <property name="runtime_classpath" refid="maven.runtime.classpath"/>
            <property name="test_classpath" refid="maven.test.classpath"/>
            <property name="plugin_classpath" refid="maven.plugin.classpath"/>

                        <echo>Starting DB</echo>
                        <ant antfile="$basedir/dbbuild.xml" target="dbdo" />
                    </tasks>
               </configuration>
             </execution>
           </executions>
         </plugin>

ant 脚本如下所示:

<project name="" default="make" basedir=".">

<target name="make">

    <property value="." name="basedir" />
    <java classname="org.h2.tools.RunScript"
      fork="true"
      maxmemory="128m" >
    <arg line="-user " />
    <arg value=" sa" />  
    <arg line="-driver "/>
    <arg value="org.h2.Driver" />
    <arg line="-url " /> 
    <arg value=" &quot;jdbc:h2:file:$basedir\\mydb;LOCK_MODE=3&quot;"/>
    <arg line="-script " />
    <arg value=" $basedir/src/main/resources/database/h2/testSchema.sql"/>

    <classpath>
      <pathelement path="$runtime_classpath"/>
    </classpath>
  </java>                       


</target>

 </project>

我不断收到此错误:

 [java] Exception in thread "main" java.sql.SQLException: No suitable driver 
 found for jdbc:h2:file:C:\Apps\development\workspace\Phase3_1\directpay\quickpay
 \\mydb;LOCK_MODE=3
 [java]     at java.sql.DriverManager.getConnection(DriverManager.java:602)
 [java]     at java.sql.DriverManager.getConnection(DriverManager.java:185)
 [java]     at org.h2.tools.RunScript.process(RunScript.java:312)
 [java]     at org.h2.tools.RunScript.runTool(RunScript.java:140)
 [java]     at org.h2.tools.RunScript.main(RunScript.java:68)
 [java] Java Result: 1
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] --------------------

h2-1.3.163.jar 在类路径中。任何帮助将不胜感激。 谢谢

【问题讨论】:

URL 不应该是jdbc:h2:c:\Apps\... 而不是jdbc:h2:file:...。您可能还想尝试使用 / 而不是 `` 作为文件路径。 感谢您的评论。两个很好的建议,但它们似乎没有单独或结合起来产生影响。 【参考方案1】:

我发现了问题。 RunScript 的文档要求在 url 参数周围加上引号...... [-help] 或 [-?] 打印选项列表 [-url ""] 数据库 URL (jdbc:...)

我已经逃脱了 quot;在参数的任一侧,一旦我删除了引号,它就可以正常工作。我将 arg 设置为:

    <arg line="-url" /> 
    <arg value="jdbc:h2:$basedir\mydb;LOCK_MODE=3;TRACE_LEVEL_FILE=3"/>

【讨论】:

以上是关于H2 java.sql.SQLException:找不到合适的驱动程序的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat上下文资源不会加载h2驱动程序

Tomcat 上下文资源不会加载 h2 驱动程序

java.sql.SQLException:getShort() 的值无效 - ''

java.sql.SQLException: SQL 语句在 org.hsqldb.jdbc.JDBCUtil.sqlException 处关闭

Oracle DB:java.sql.SQLException:关闭连接

Cause: java.sql.SQLException: 请求的转换无效 ; uncategorized SQLException for SQL []; SQL state [99999]; er