Задача Ant SQL Задача classpath - PullRequest
2 голосов
/ 07 мая 2009

У меня есть следующий муравей 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. Эхо печатает правильно:

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" в задании выдает то же сообщение об ошибке.

Я использую муравей 1.7.1 (встроенный в Netbeans 6.5)

Ответы [ 3 ]

4 голосов
/ 07 мая 2009

Синтаксис выглядит правильно для меня. Попробуйте передать ключ -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 не поврежден и действительно содержит класс OracleDriver?

1 голос
/ 07 мая 2009

Попробуйте изменить имя класса на oracle.jdbc.OracleDriver. Пакет oracle.jdbc.driver устарел в пользу oracle.jdbc.

См. Раздел «Старый пакет oracle.jdbc.driver исчезнет» в readme здесь .

0 голосов
/ 07 мая 2009

Вместо атрибута classpathref вы можете попробовать использовать элемент classpath.

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

Так я всегда ссылаюсь на свои пути к классам, и у меня никогда не было проблем.

...