我的目录中有jt400.jar:
/path
/jt400.jar
/Test.java
Run Code Online (Sandbox Code Playgroud)
Test.java的内容:
import java.sql.*;
//import com.ibm.as400.*; // To be uncommented later
public class Test {
public static void main(String[] args) throws Exception {
String url = "jdbc:as400//myserver.domain.com;DSN=DB2;Uid=name;Pwd=password;";
Connection conn = DriverManager.getConnection(url);
}
}
Run Code Online (Sandbox Code Playgroud)
我编译这个:
$ javac -cp jt400.jar Test.java
Run Code Online (Sandbox Code Playgroud)
并尝试运行:
$ java -cp jt400.jar Test.java
Run Code Online (Sandbox Code Playgroud)
哪个产生:
Exception in thread "main" java.sql.SQLException: No suitable driver found for jdbc:as400://myserver.domain.com;DSN=DB2;Uid=name;Pwd=password;
at java.sql.DriverManager.getConnection(DriverManager.java:635)
at java.sql.DriverManager.getConnection(DriverManager.java:213)
at Killer.main(Test.java:8)
Run Code Online (Sandbox Code Playgroud)
现在,在jt400.jar里面我已经验证:
$ jar -tf jt400.jar | grep class | grep AS400 | grep Driv
com/ibm/as400/access/AS400JDBCDriver.class
Run Code Online (Sandbox Code Playgroud)
然而,当我取消对进口线的注释时,我得到了
Test.java:3: package com.ibm.as400 does not exist
import com.ibm.as400.*;
Run Code Online (Sandbox Code Playgroud)
所以要么我完全误解了Java的类路径和导入机制,要么肯定它不尊重我提供的类路径.
我怎么解决这个问题?我无法在Google或Stackoverflow上找到任何有用的东西,但我没有花太多时间在Java上,所以我确定我做错了什么.
String url = "jdbc:as400//myserver.domain.com;DSN=DB2;Uid=name;Pwd=password;";
Run Code Online (Sandbox Code Playgroud)
你错过了冒号,它应该是:
String url = "jdbc:as400://myserver.domain.com;DSN=DB2;Uid=name;Pwd=password;";
// /\
Run Code Online (Sandbox Code Playgroud)