一个包里的类怎么引用
一个类
package Beanes;
import java.sql.*;
import java.util.*;
public class ConnectionPool implements Runnable {
另外一个类
package Beanes;
import java.sql.*;
import java.util.*;
public class datacon
{
private ConnectionPool connectionPool;
编译到这里就出错。?
问题点数:20、回复次数:8Top
1 楼maxtiger(tiger)回复于 2002-11-27 13:23:42 得分 0
import 进来呀
你先编译一下那个ConnectionPoolTop
2 楼qwen()回复于 2002-11-27 14:23:47 得分 0
同在一个包,应该可以直接用呀,不必importTop
3 楼qwen()回复于 2002-11-27 14:32:04 得分 0
提示是cannot resolve symbolTop
4 楼freefalcon(心宇—消失中...)回复于 2002-11-27 15:08:32 得分 0
尝试下面三种方法:
1.直接引用
2.import ConnectionPool;
3.import Beanes.ConnectionPool;Top
5 楼qwen()回复于 2002-11-28 08:44:53 得分 0
是不是和我的头一个类的定义有关系
ConnectionPool implements Runnable {
}
谁能帮我解决一下。多谢
我把代码贴出来Top
6 楼qwen()回复于 2002-11-28 08:47:08 得分 0
package Beanes;
import java.sql.*;
import java.util.*;
public class ConnectionPool implements Runnable {
private String driver,url,username,password;
private int maxConnections;
private boolean waitIfBusy;
private Vector availableConnections,busyConnections;
private boolean connectionPending = false;
private static String DEFAULT_POOL_NAME = "DbPool";
public ConnectionPool()
throws SQLException,MissingResourceException
{
this(DEFAULT_POOL_NAME);
}
public ConnectionPool(String s)
throws SQLException,MissingResourceException
{
ResourceBundle resourcebundle = ResourceBundle.getBundle(s);
this.driver=resourcebundle.getString("driver");
this.url=resourcebundle.getString("url");
this.username=resourcebundle.getString("username");
this.password=resourcebundle.getString("password");
this.maxConnections=Integer.parseInt(resourcebundle.getString("maxConnections"));
this.waitIfBusy=true;
int initialConnections=30;
if(initialConnections >maxConnections) {
initialConnections=maxConnections;
}
availableConnections= new Vector(initialConnections);
busyConnections=new Vector();
for (int i=0;i<initialConnections;i++){
availableConnections.addElement(makeNewConnection());
}
}
public synchronized Connection getConnection()
throws SQLException
{
if(!availableConnections.isEmpty()){
Connection existingConnection =(Connection)availableConnections.lastElement();
int lastIndex=availableConnections.size() - 1;
availableConnections.removeElementAt(lastIndex);
if(existingConnection.isClosed()){
notifyAll();
return(getConnection());
}else{
busyConnections.addElement(existingConnection);
return(existingConnection);
}
}else{
if ((totalConnections()<maxConnections)&& !connectionPending) {
makeBackgroundConnection();
}else if(!waitIfBusy){
throw new SQLException("Connection limit reached");
}
try{
wait();
}catch(InterruptedException ie){}
return (getConnection());
}
}
private void makeBackgroundConnection(){
connectionPending=true;
try{
Thread connectThread= new Thread(this);
connectThread.start();
}catch(OutOfMemoryError oome){
}
}
public void run() {
try{
Connection connection =makeNewConnection();
synchronized(this){
availableConnections.addElement(connection);
connectionPending=false;
notifyAll();
}
}catch (Exception e){
}
}
private Connection makeNewConnection() throws SQLException {
try {
Class.forName(driver);
Connection connection=DriverManager.getConnection(url,username,password);
return (connection);
}catch(ClassNotFoundException cnfe){
throw new SQLException("Can't find class for driver:" + driver);
}
}
public synchronized void free(Connection connection){
busyConnections.removeElement(connection);
availableConnections.addElement(connection);
notifyAll();
}
public synchronized int totalConnections(){
return( availableConnections.size()+busyConnections.size());
}
public synchronized void closeAllConnections(){
closeConnections(availableConnections);
availableConnections=new Vector();
closeConnections(busyConnections);
busyConnections= new Vector();
}
private void closeConnections(Vector connections){
try{
for(int i=0;i<connections.size();i++){
Connection connection=(Connection)connections.elementAt(i);
if(!connection.isClosed()){
connection.close();
}
}
}catch(SQLException sqle){
}
}
public synchronized String toString() {
String info="ConnectionPool(" + url + "," + username +
",available=" + availableConnections.size() +
",busy=" + busyConnections.size() +
",max=" + maxConnections;
return(info);
}
}Top
7 楼qwen()回复于 2002-11-28 08:50:50 得分 0
第二个datacon类用第一个connectionpool类
代码(部分)
package Beanes;
import java.sql.*;
import java.util.*;
public class datacon
{
ConnectionPool connectionPool;
Connection conn = null;
ResultSet rs = null;
Statement stmt = null;
public datacon()
{
}
public ResultSet executeQuery(String sql)
{
rs = null;
try{
conn = connectionPool.getConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
}catch(SQLException ex){
System.err.println("数据库检索错误: " + ex.getMessage());
}
return rs;
}
现在的问题connectionpool.java可以通过
datacon不能通过。错误出在引用connectionpool上。不知哪位大侠帮助解决一下。Top
8 楼beyondii(十万个为什么)回复于 2002-11-28 09:18:16 得分 20
implements Runnable 应该是这里出现问题,试试不用多线程,我觉得这类东西用静态的比较合适,每次调用的时候同步就可以了,没有必要用多线程的Top




