- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 JDBI 在我的计算机上本地创建了一个项目,它与数据库的接口(interface)没有任何问题。
我现在在 Tomcat 服务器上使用同一个项目。我正在使用 javac -cp "lib/*"cs5530/*.java
编译我的代码,其中 lib 包含我依赖的外部 jar,例如 jdbi-2.49.jar。
这段代码是我创建新 DBI 的地方。
public static DAO getDbConnection() {
MysqlDataSource ds = new MysqlDataSource();
ds.setServerName("server");
ds.setUser("user");
ds.setPassword("password");
ds.setDatabaseName("dbName");
DBI dbi = new DBI(ds);
return dbi.onDemand(DAO.class);
}
它调用了我的类构造函数:
public Customer() {
this.conn = getDbConnection();
}
这是我得到的错误:
java.lang.NoClassDefFoundError: org/skife/jdbi/v2/DBI
cs5530.Customer.getDbConnection(Customer.java:85)
cs5530.Customer.<init>(Customer.java:31)
org.apache.jsp._1_jsp._jspService(_1_jsp.java:105)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
那么,为什么它在看到必要的类时可以正常编译,然后在运行时出现问题,我该如何解决这个问题?
谢谢。
最佳答案
当 JVM 在其类路径中找不到匹配的类时,会发生 NoClassDefFoundError。它没有找到您的 jdbi 库。在编译时,您明确告诉 javac 在哪里可以找到该库,但在运行时 Tomcat 需要能够找到它,这意味着将它放在 Tomcat 知道寻找它的地方。
通常,Tomcat 希望在 webapps 文件夹下找到组织为单独 Web 应用程序的 Java 代码,这样应用程序 jar 就可以放在
$CATALINA_HOME/webapps/whateveryourwebappnameis/WEB-INF/lib
应用程序的类文件将放在
$CATALINA_HOME/webapps/whateveryourwebappnameis/WEB-INF/classes
public_html 在我看来像是一个放置 Java 类文件的奇怪地方。但是,如果您拥有的其他内容对您有用,请将 lib 文件夹移动到 WEB-INF 下。
关于java.lang.NoClassDefFoundError : org/skife/jdbi/v2/DBI 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22816328/
我希望 JDBI 将自动生成的主键(Long 值)转换为另一个类。 我的 DAO: @RegisterMapper(SystemIdMapper.class) public interface Sys
这两个功能是否都经过 sanitizer /安全以防止 SQL 注入(inject)?例如,考虑以下情况: @SqlUpdate("INSERT INTO () VALUES ()") pu
您如何将 dropwizard jdbi 2.78 升级到 jdbi 版本 3,因为我想使用其中包含的连接功能。 最佳答案 项目成员在这里。 我们将在 v3 最终版本之前发布更完整的迁移指南。与此同时
当我尝试执行下面的代码时, 我收到 UnableToCreateStatementException 异常,原因如下: java.sql.SQLException:参数索引超出范围(11 > 参数数量
我正在使用 dropwizard,我想构建一个在实体中具有各种外键关系的 REST 应用程序。 例如,给出以下 3 个表: -- table persons CREATE TABLE PUBLIC.P
我使用 jdbi inTransaction() 函数将 SQL 查询作为事务执行。我想知道内部如何/使用什么类型的锁定机制。另外,事务期间是锁定整个表还是只锁定需要更新的记录? 最佳答案 事务纯粹在
final MyDAO dao = database.onDemand(MyDAO.class); dao 实例可以重用吗?或者我们是否需要在每次使用时实例化它? 从代码来看,它似乎负责维护数据库事务
我在将JDBI仅插入列表中的第一项时遇到问题 data class UserResourceRow( val userId: UserId, val roleId: R
我收到没有可用于 com.google.common.base.Optional 的容器构建器错误。 这是更完整的堆栈跟踪: java.lang.IllegalStateException: No c
我有一个 POJO,其中包含一个内部(非静态)类,因为它共享父级 id public Long getId() { return Parent.this.getId(); } 现在我尝试在 JD
我正在使用 JDBI 通过流迭代结果集。目前,当结果中存在同名列时,mapToMap 会导致问题。我需要的只是没有列名称的值。 有没有办法将结果映射到对象列表/数组?该文档没有这方面的示例。我想要类似
我有以下类(class): public class User { private int id; private String name; private List comm
选择 JPA 和 Spring-Data 的替代方案,我想尝试使用 JDBI 使用 SQLite 实现我的存储库 存储库代码 /** * SQLite implementation of Foo
我想将查询命令放入 sql 文件中,然后使用 createStatement 从文件中读取查询并进行绑定(bind)。 执行 h.createStatement("SOME LONG QUERY AN
我正在尝试使用这样的方法在我的类中创建一个表某物: void createTab() { DBI dbi = new DBI(DBURL, DBUSER, DBPASS); BindExamples
我正在使用 JDBI 将一些数据插入到带有自动递增主键的 mysql 表中。我使用索引来进行插入。代码如下所示: public void insertWorkout(String[] values)
我正在评估 JDBI 作为 Spring JDBC 和 MyBatis 的可能替代品,但遇到了一些问题。我在 Spring Boot 1.2.5 和 Spring 4 中使用 JDBI。 我得到以下堆
我之前曾将 JDBI 用于 Java 持久性方面,但它始终是流畅的 API 而不是对象 API。立即试用对象 API。 我有一个非常简单的 DAO 对象: public interface Perso
1) 是否可以为 Dropwizard 的 JDBI mysql 连接器设置 queryTimout 的 global 值?默认值是多少?我不想在每个 DAO 中都使用@QueryTimeOut。 2
我有一个 Java 应用程序,它使用 JDBI 作为我的数据库代码。我有许多 DAO,它们大致使用以下结构进行查询: return handle.createQuery(sql)
我是一名优秀的程序员,十分优秀!