【发布时间】:2012-07-22 15:31:19
【问题描述】:
大家好,
我在让 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 服务器。我一定会尝试的,但我会继续努力解决这个问题。还有什么好主意吗?
【问题讨论】:
标签: servlets netbeans jdbc jar glassfish