Java 找不到符号,符号:变量DBHandler位置:类ProcessBean

Java 找不到符号,符号:变量DBHandler位置:类ProcessBean,java,servlets,Java,Servlets,我在包帮助程序中有两个类,ProcessBean.java和DBHandler.java ProcessBean.java: package helpers; import java.util.*; import java.sql.*; public class ProcessBean implements java.io.Serializable { public ProcessBean() {} public String processRequest(String o

我在包帮助程序中有两个类,ProcessBean.java和DBHandler.java

ProcessBean.java

package helpers;

import java.util.*;
import java.sql.*;

public class ProcessBean implements java.io.Serializable {
    public ProcessBean() {}

    public String processRequest(String option) {
     String query = "";
        String type = option.split("|")[0];
        int id = Integer.parseInt(option.split("|")[1]);

        if(type.equals("category"))
            query = "Select * from products where categoryId="+id;
        else if(type.equals("vendor"))
            query = "Select * from products where vendorId="+id;
        else
            query = "select * from products";

         Vector<String []> v = DBHandler.doQuery(query);
         return DBHandler.getQueryResultTable(v);
    }      
}  
package helpers;

import java.util.*;
import java.sql.*;

public class DBHandler implements java.io.Serializable {

    public static Vector<String []> doQuery(String s) {
        String user = "xxx";
        String password = "xxx";
        String database = "xxx";
    String connectionURL = "jdbc:mysql://opatija:3306/" + database +
            "?user=" + user + "&password=" + password;      
    Connection connection = null;
    Statement statement = null;
    ResultSet resultSet = null;
        Vector<String[]> v = new Vector<String[]>();        

    try {
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        connection = DriverManager.getConnection(connectionURL);
        statement = connection.createStatement();
        resultSet = statement.executeQuery(s);

            ResultSetMetaData md = resultSet.getMetaData();
            int numCols = md.getColumnCount();

            while(resultSet.next()) {
                String [] tmp = new String[numCols];
                for(int i=0; i < numCols; i++)
                    tmp[i] = resultSet.getString(i+1);  // resultSet getString is 1 based
                v.add(tmp);                
                    }
        }
        catch(Exception e) {
            e.printStackTrace();
            }           
        finally {
            try {
                resultSet.close();
                statement.close();                
                connection.close();
                }
            catch(SQLException e) {}  // don't do anything if the connection is not open.
        }
        return v;
    }  
    public static int doUpdate(String s) {
        String user = "xxx";
        String password = "xxx";
        String database = "xxx";
        String connectionURL = "jdbc:mysql://opatija:3306/" + database +
            "?user=" + user + "&password=" + password;      
        Connection connection = null;
        Statement statement = null;
        int result = -1;   

    try {
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        connection = DriverManager.getConnection(connectionURL);
        statement = connection.createStatement();  
            result = statement.executeUpdate(s);
            }
    catch(Exception e) {
        e.printStackTrace();
        }           
        finally {
            try {
                statement.close();                
                connection.close();
                }
            catch(SQLException e) {}  // don't do anything if the connection is not open.
        }
        return result;
    }

    public static String getQueryResultTable(Vector<String []> v) {
        StringBuffer toReturn = new StringBuffer();
    toReturn.append("<table>");
    for(int i=0; i < v.size(); i++) {
        String [] tmp = v.elementAt(i);
        toReturn.append("<tr>");        
        for(int j=0; j < tmp.length; j++)
            toReturn.append("<td>" + tmp[j] + "</td>");
        toReturn.append("</tr>");
        }
    toReturn.append("</table>"); 
    return toReturn.toString();
    }                       
}            
这两个文件都位于服务器上的文件夹帮助程序下,
DBHandler
已成功编译。 我什么都试过了,但我想不出来


非常感谢您的帮助。

要让编译器找到DBHandler,它必须位于编译器使用的类路径上

您已经编辑了您的帖子,以表明您在命令行上编译,因此您有一个“默认目录”(即您要cd到的目录)。假设目录是“projects”,所以它包含目录“packages”

您需要在类路径上有目录“projects”。您可以通过在项目中编译命令行的默认目录,并使类路径包含“.”;您可以将“projects”目录放在类路径中

我不知道如何在mac上设置系统变量。您可以在命令行上通过以下方式执行命令来设置类路径:
javac-cp。helpers/ProcessBean.java

默认情况下,“.”可能位于类路径上;我在mac电脑上也不知道

我使用notepad++、mac和xQuartz连接到服务器,cd一直连接到“helpers”文件夹,然后使用命令-javac ProcessBean.java

位于
helpers
的父文件夹中,并使用以下编译命令

javac -d . helpers/ProcessBean.java
所有生成的类文件都将保存在其包特定的文件夹中。
在此之前,请确保类路径也设置为当前文件夹

classpath = %classpath%;.

这将删除包结构中的特定类not error。

您没有正确使用向量,或者您没有导入正确的向量。不管怎样,问题都出在你的向量上。哦,不,没关系,对不起,你的错误消息真的不清楚。我不认为OP遇到了类路径问题,教授,这让我很困惑,我使用记事本++,我是Java新手,所以你如何编译?你在windows、unix、mac上吗?你使用命令行吗?试着想象我们对你正在做的事情一无所知,这样问你的问题;不要以为我们在没有上下文信息的情况下就能知道你的问题是什么。我使用mac和xQuartz连接到服务器,cd一直连接到文件夹“helpers”,然后是javac ProcessBean。java@user3331487使用IDE和诸如Maven或Gradle之类的构建系统来避免这种麻烦。谢谢Ravinder,这很有帮助,但我还有一个问题,我正在试图弄清楚如何在jsp${ProcessBean.processRequest('here')}中向ProcessBean发送request.getParameter(“选项”)。它应该是
ProcessBean.processRequest(request.getParameter(“选项”))
.Example@请查看我的问题
javac -d . helpers/ProcessBean.java
classpath = %classpath%;.