Amazon ec2 не может найти org.apache.tomcat.dbcp.dbcp.BasicDataSource

Я пытаюсь подключиться к службе 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. Что я делаю не так?


person John Bupit    schedule 28.12.2014    source источник
comment
Ваша проблема заключается в том, чтобы быть где-то еще, вы используете какой-то король автоматической привязки базы данных ‹-> Java Object?   -  person gimpycpu    schedule 28.12.2014
comment
Нет. Должен ли я дать вам полную трассировку стека?   -  person John Bupit    schedule 28.12.2014
comment
Мое единственное предположение заключается в том, что ваш runnable не может найти вашу com.relayapp.server.database.Database — это то, что вы сами закодировали?   -  person gimpycpu    schedule 28.12.2014
comment
Тот же код (с другими учетными данными ServerConfig) работает на моем локальном компьютере. Он ломается на amazon-aws.   -  person John Bupit    schedule 28.12.2014
comment
но как вы запускаете его на своей машине по сравнению с экземпляром aws?   -  person gimpycpu    schedule 28.12.2014
comment
У меня есть установка tomcat на моей локальной машине. Я использую Eclipse для экспорта файла войны в папку /webapps. Он работает на моем локальном сервере tomcat (с учетными данными, установленными на мой локальный MySQL), но не работает на сервере ec2.   -  person John Bupit    schedule 28.12.2014
comment
Вам нужно изменить имя хоста mysql с localhost на ec2 IP или общедоступный DNS   -  person BMW    schedule 28.12.2014
comment
Вы пытались открыть свою войну с помощью WinRAR или чего-то еще, чтобы увидеть, включены ли все ваши библиотеки в вашу войну?   -  person gimpycpu    schedule 28.12.2014
comment
@BMW Изменение имени хоста не работает. Он показывает ту же ошибку.   -  person John Bupit    schedule 28.12.2014


Ответы (1)


Проблема была с пакетом org.apache.tomcat.dbcp.dbcp.BasicDataSource.

Этот ответ помог это исправить. Вместо папки /usr/share/java в папке usr/share/tomcat7 был tomcat, и я выполнил команду:

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
person John Bupit    schedule 29.12.2014