祝大家有美好的一天,
我在让 Glassfish 3.1.2 看到一些进口的罐子时遇到了一些问题。因为这是我的研究生项目,所以我有限制。除了 Glassfish、Netbeans,我不能使用其他任何东西,也不能使用 Maven、Hibernate、Ear 或其他任何东西。
我正在使用嵌入式 Derby 驱动程序。(我可以使用另一个数据库,但在我的试验中问题仍然存在)。
我编写了一些普通的 java 代码来连接数据库:
try{
Connection c = DriverManager.getConnection(URL, USER, PWD);
Statement st = c.createStatement();
st.executeUpdate("CREATE TABLE Users" +
" (ACCOUNT VARCHAR(20) PRIMARY KEY," +
" PWD VARCHAR(20) NOT NULL," +
" USERTYPE INTEGER NOT NULL)");
...
}
catch (SQLException x){
System.out.println(x);
}
它很丑,它不使用连接池,它可以工作。我稍后会使用它们。显然我必须将 derbyclient.jar 添加到库中。
当我尝试在 servlet 中使用此方法时出现问题:
protected void processRequest(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
try{
DriverManager.registerDriver(org.apache.derby.jdbc.ClientDriver);
Connection c = DriverManager.getConnection(dbUsr, pwd, url);
Statement st = c.createStatement();
ResultSet rs = st.executeQuery(query);
...
}catch (SQLException e){
ServletException e1 = new ServletException(e.getMessage());
throw e1;
}
我无法编译 servlet,因为“包 org.apache.derby.jdbc 不存在”。
我可以提供更多信息(20 多个小时的阅读和不成功的试验):
- servlet 和 java 代码在同一个项目中,因此它们应该都能看到 derbyclient.jar。
- 当我编写 org.apache.berby 时,netbeans 向我展示了用于自动完成的包导航器,因此它知道某个地方有一个 jar。
- 我试图将 derbyclient.jar 放入:
- Glassfish/glassfish/domains/domain1/lib
- Glassfish/glassfish/domains/domain1/lib/ext
- Glassfish/glassfish/lib
- 在没有驱动程序注册的情况下尝试,java 代码没有它就可以工作,但我得到“javax.servlet.ServletException:找不到适合应用程序的驱动程序”。我觉得有道理。
我已经黔驴技穷了。有人愿意帮忙吗?
编辑:
昨天我从老师那里得到消息:她责怪 Netbeans IDE 丢失了 jar 的踪迹。这似乎是一个已知的错误。
我受到热烈的鼓励,转而使用 tomcat 服务器。我一定会尝试的,但我会继续努力解决这个问题。还有什么好主意吗?