【问题标题】:Amazon ec2 can't find org.apache.tomcat.dbcp.dbcp.BasicDataSourceAmazon ec2 找不到 org.apache.tomcat.dbcp.dbcp.BasicDataSource
【发布时间】:2014-12-28 09:50:19
【问题描述】:

我正在尝试使用以下代码连接到 MySQL 服务,但它无法初始化数据库类:

import org.apache.tomcat.dbcp.dbcp.BasicDataSource;

public class Database {

    private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    private static final BasicDataSource dataSource = new BasicDataSource();

    static {
        dataSource.setDriverClassName(JDBC_DRIVER);
        dataSource.setUrl(ServerConfig.DB_URL);
        dataSource.setUsername(ServerConfig.DB_USERNAME);
        dataSource.setPassword(ServerConfig.DB_PASSWORD);
    }

    ...
}

这是 ServerConfig 类:

public class ServerConfig {

    public static final String DB_URL = "jdbc:mysql://localhost:3306/relay";
    public static final String DB_USERNAME = "my_username";
    public static final String DB_PASSWORD = "mypassword";

    public static final boolean DEBUG = true;
}

这是堆栈跟踪:

java.lang.NoClassDefFoundError: Could not initialize class com.relayapp.server.database.Database
        at com.relayapp.server.model.User.add(User.java:125)
        at com.relayapp.server.request.AddUser.processRequest(AddUser.java:51)
        at com.relayapp.server.request.RelayRequestServlet.doPost(RelayRequestServlet.java:55)
        at com.relayapp.server.request.RelayRequestServlet.doGet(RelayRequestServlet.java:22)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:620)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:745)

用户凭据似乎是正确的,我可以成功运行mysql 命令。 我做错了什么?

【问题讨论】:

  • 您的问题接缝在其他地方,您是否使用了一些自动数据库之王 Java 对象绑定?
  • 不,我不是。我应该给你完整的堆栈跟踪吗?
  • 我唯一的猜测是你的 runnable 找不到你的 com.relayapp.server.database.Database 是你自己编码的吗?
  • 相同的代码(具有不同的 ServerConfig 凭据)在我的本地计算机上工作。它在 amazon-aws 上崩溃了。
  • 但是你如何在你的机器上运行它而不是在 aws 实例上运行它?

标签: java tomcat amazon-web-services amazon-ec2 apache-commons-dbcp


【解决方案1】:

问题出在包org.apache.tomcat.dbcp.dbcp.BasicDataSource

This answer 帮助修复了它。而不是/usr/share/java 文件夹,tomcat 在usr/share/tomcat7 文件夹中,我运行了命令:

sudo wget -O /usr/share/tomcat7/tomcat-dbcp-7.0.57.jar http://search.maven.org/remotecontent?filepath=org/apache/tomcat/tomcat-dbcp/7.0.57/7tomcat-dbcp-7.0.57.jar

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-08
    • 2016-09-23
    • 2015-08-22
    • 2016-04-05
    • 2021-04-27
    • 2018-11-15
    • 2013-03-28
    • 2018-10-31
    相关资源
    最近更新 更多