Java 找不到符号,符号:变量DBHandler位置:类ProcessBean
我在包帮助程序中有两个类,ProcessBean.java和DBHandler.java ProcessBean.java: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
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%;.