命令行方式运行 报找不到jar包中的类??

时间:2021-01-25 09:11:44
package com.coe.docstore.util.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.mysql.jdbc.Driver;
 

public class DBAccess {
private String driveName="com.mysql.jdbc.Driver";
private String userName="root";
private String password="root";
private String dbName="docstore";
private String tableName="convertlist";
private String url="jdbc:mysql://localhost:3306/"+dbName;

private static DBAccess access=null;

private Connection conn=null;

public static DBAccess getInstance(){
if(access==null){
access=new DBAccess();
}
return access;
}
private DBAccess(){
try { 
 
Class.forName(driveName);
} catch (ClassNotFoundException e) {
  
System.out.println("class.forname"+e);
}
try {
conn=DriverManager.getConnection(url, userName, password);
} catch (SQLException e) {
System.out.println("getconnection"+e);
e.printStackTrace();
}
}
public List<String> getList(){

String sql="select * from "+tableName;
ResultSet rs=null;
List<String> list=new ArrayList<String>();

try {
rs=conn.prepareStatement(sql).executeQuery();

} catch (SQLException e) {
System.out.println("查询数量");
e.printStackTrace();
}
try {
while(rs.next()){
list.add(rs.getString(2));
System.out.println("新加"+list.get(list.size()-1));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
System.out.println("list长度 "+list.size());
return list;
}
public static void main(String[] args){
getInstance().getList();
}
}


直接在eclipse中启动可以正确执行,
如果用命令行方式运行编译好的文件就报找不到Driver这个类(我导入的mysqljar包)
这是怎么回事???

3 个解决方案

#1


[*nix]java -cp mysql-connector-java-5.1.10.jar:. com.coe.docstore.util.db.DBAccess
or
[win]java -cp mysql-connector-java-5.1.10.jar;. com.coe.docstore.util.db.DBAccess

#2


确实可以,
但我又发现了个新问题:
Runtime.exec("java -cp mysql-connector-java-5.1.10.jar;. com.coe.docstore.util.db.DBAccess");
为什么这样就卡住不执行了??

#3


因为你在命令行运行的时候,程序找不到驱动类!如果想在命令行运行,那么你加载驱动的时候,就得把完整的驱动类的路径加进去,包括你的jar文件名。

#1


[*nix]java -cp mysql-connector-java-5.1.10.jar:. com.coe.docstore.util.db.DBAccess
or
[win]java -cp mysql-connector-java-5.1.10.jar;. com.coe.docstore.util.db.DBAccess

#2


确实可以,
但我又发现了个新问题:
Runtime.exec("java -cp mysql-connector-java-5.1.10.jar;. com.coe.docstore.util.db.DBAccess");
为什么这样就卡住不执行了??

#3


因为你在命令行运行的时候,程序找不到驱动类!如果想在命令行运行,那么你加载驱动的时候,就得把完整的驱动类的路径加进去,包括你的jar文件名。