我有以下蚂蚁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)
答案 0 :(得分: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类?
答案 1 :(得分:1)
尝试将类名更改为oracle.jdbc.OracleDriver。不推荐使用oracle.jdbc.driver包,而使用oracle.jdbc。
请参阅自述文件here中的“旧oracle.jdbc.driver程序包将离开”部分。
答案 2 :(得分:0)
您可以尝试使用classpath元素而不是classpathref属性。
<sql ..params..>
<classpath refid="antclasspath"/>
</sql>
这就是我总是引用我的类路径的方式,我从来没有遇到任何问题。