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ディレクトリにOracleJDBCドライバがあります。Echoはそれを正しく印刷します:

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

どういうわけか、sqlantタスクはまだ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

構文は私には正しいように見えます。スイッチをantコマンドに渡してみてください。これにより、使用しているクラスパスを出力するようにタスクに-v指示されます。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が優先されます。

こちらのreadmeの「古いoracle.jdbc.driverパッケージは廃止されます」のセクションを参照してください。

于 2009-05-07T12:28:25.007 に答える
0

classpathref属性の代わりに、classpath要素を使用してみることができます。

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

これが私が常にクラスパスを参照する方法であり、問​​題が発生したことはありません。

于 2009-05-07T10:50:23.417 に答える