2

我有以下蚂蚁build.xml

<path id="antclasspath">
    <fileset dir="lib">
        <include name="*.jar"/>
    </fileset>
</path>

<property name="pathvar" refid="antclasspath" />
<echo message="Classpath is ${pathvar}"/>

<sql
    driver="oracle.jdbc.driver.OracleDriver"
    url="jdbc:oracle:thin:@myserver.hu:1521:dbid"
    userid="myuserid"
    password="mypassword"
    print="yes"
    classpathref="antclasspath">
    select * from table
</sql>

lib 目录中有一个Oracle JDBC 驱动程序。Echo 正确打印出来:

Classpath is E:\MyDir\lib\ojdbc14-10_2_0_3.jar

不知何故 sql ant 任务仍然无法加载 Oracle 驱动程序:

E:\MyDir\build.xml:100: Class Not Found: JDBC driver oracle.jdbc.driver.OracleDriver could not be loaded

这个 build.xml 有什么问题?很奇怪,它昨天工作了几次,但再也没有工作过。

classpath="E:\MyDir\lib\ojdbc14-10_2_0_3.jar"在任务中使用会给出相同的错误消息。

我正在使用 ant 1.7.1(内置于 Netbeans 6.5)

4

3 回答 3

4

语法对我来说是正确的。尝试将-v开关传递给您的 ant 命令,这将指示sql任务打印出它正在使用的类路径。您应该会看到如下内容:

[sql] connecting to jdbc:oracle:thin:@myserver.hu:1521:dbid
[sql] Loading oracle.jdbc.driver.OracleDriver using AntClassLoader with classpath E:\MyDir\lib\ojdbc14-10_2_0_3.jar
[sql] Executing commands
[sql] SQL:  select * from dual
[sql] Processing new result set.
[sql] DUMMY
[sql] X

[sql] 0 rows affected
[sql] 0 rows affected
[sql] Committing transaction
[sql] 1 of 1 SQL statements executed successfully

如果这没有帮助,您可以尝试传递-debug开关,这将打印出大量信息,包括类加载器调试。

最后,您是否确认您的 ojdbc jar 没有损坏,并且实际上包含 OracleDriver 类?

于 2009-05-07T15:41:42.390 回答
1

尝试将类名更改为 oracle.jdbc.OracleDriver。oracle.jdbc.driver 包已被弃用,取而代之的是 oracle.jdbc。

请参阅此处自述文件中的“旧的 oracle.jdbc.driver 包将消失”部分。

于 2009-05-07T12:28:25.007 回答
0

您可以尝试使用 classpath 元素,而不是 classpathref 属性。

<sql ..params..>
  <classpath refid="antclasspath"/>
</sql>

这就是我总是引用我的类路径的方式,而且我从来没有遇到任何问题。

于 2009-05-07T10:50:23.417 回答