我有一个问题,当我用eclipse构建器编译我的项目时,一切都很好,但当我用Ant做同样的事情时,我收到错误:
java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@1.2.3.4:1521
我有
ojdbc6.jar
在"lib"中,它与"src"、"bin"等文件夹相同
<project basedir=".">
<target name="jar">
<mkdir dir="build/jar"/>
<jar destfile="build/jar/myTool.jar">
<manifest>
<attribute name="Main-Class" value="myPackage.application"/>
</manifest>
<fileset dir="bin" includes="**/*.class" />
<zipgroupfileset dir="lib" includes="**/*.jar" />
</jar>
</target>
</project>
在我的jar文件中,我可以找到:
oraclejdbcdriver
带有.class文件的文件夹
短代码:
String url = "jdbc:oracle:thin:@" + host + ":" + port;
Properties props = new Properties();
InputStream input = new FileInputStream(getConfigurationFile());
props.load(input);
Connection conn = DriverManager.getConnection(url,props);
当我写:
<path id="antclasspath">
<fileset dir="lib">
<include name="ojdbc6.jar"/>
</fileset>
</path>
<sql
driver="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@1.2.3.4:1521"
userid="test"
password="test"
print="yes"
classpathref="antclasspath">
select * from devices;
</sql>
在build.xml文件中,它可以工作并返回正确的行,但从.jar文件启动应用程序时仍然无法工作
//编辑从我的jar中排除外部libs并将类路径添加到ant文件中的manifest解决了我的问题
您忘记设置类路径。尝试用启动你的程序
java -cp ojdbc6.jar -jar myTools.jar
请调整包含JDBC驱动程序的jar文件的路径。
在Ant中,它之所以有效,是因为您将jar文件添加到类路径中。
在调用CLI时,必须提供类路径。
使用命令行参数-jar
时,必须通过命令行参数-cp
提供类路径(环境变量CLASSPATH
将不起作用)。