веб-приложение Java, запущенное в NetBeans - SQLException: нет подходящего драйвера - PullRequest
1 голос
/ 19 сентября 2010

Я пытаюсь запустить приложение, разработанное на другой машине, на которой оно отлично работает, поэтому оно должно иметь какое-то отношение к конфигурациям на машине, на которой я сейчас пытаюсь его запустить.Я использую NetBeans 6.9, Tomcat 6.0.26 и Maven.

Когда я пытаюсь запустить его, он выдает следующую ошибку:

Sep 19, 2010 12:51:02 AM org.hibernate.cfg.SettingsFactory buildSettings
WARNING: Could not obtain connection metadata
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class 'com.mysql.jdbc.Driver' for connect URL 'http://maven.apache.org'
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1150)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
    at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:69)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:84)
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2073)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1298)
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
    at AppConfiguration.loadConfig(AppConfiguration.java:164)
    at Listener.contextInitialized(Listener.java:40)
    at Org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637)
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:563)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:519)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.sql.SQLException: No suitable driver
    at java.sql.DriverManager.getDriver(DriverManager.java:264)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1143)
    ... 32 more

Я должен упомянуть, что:

1 У меня есть mysql-connector-java-5.1.13-bin.jar в Apache Tomcat 6.0.26 \ lib и в моем файле pom.xml:

      <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <url>http://maven.apache.org</url>

и

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.13</version>
    <scope>provided</scope>
</dependency>

2 У меня есть jar в моем локальном хранилище maven.

3 Похоже, Netbeans теперь поставляется с «встроенной версией maven 3.0», которая является бета-версией.Поэтому я настроил его для использования в качестве внешнего Maven Home: C: \ Program Files \ apache-maven-2.2.1.Запуск mvn --version дает правильную версию, поэтому maven 2.2.1, похоже, правильно установлен в моей системе.Но по какой-то причине всякий раз, когда я запускаю приложение, я также получаю следующее:

WARNING: You are running embedded Maven builds, some build may fail due to     incompatibilities with latest Maven release. To set Maven instance to use for building, click here.

Сборка не дает сбоя, но ссылка, на которую указывает указанное выше предупреждение, возвращает меня в то же окно, где яВы уже настроили «Внешний Maven Home», как упомянуто выше.

4 Добавление DriverManager.registerDriver (new com.mysql.jdbc.Driver ());(как видно в другом посте здесь на stackoverflow), прежде чем что-либо, связанное с базой данных, не помогло.

5 Тот же код выполнялся на другой машине.

Буду признателен за любые идеи относительно того, почему я получаю ошибку драйвера jdbc.И имейте в виду, что приложение работало на другом компьютере.

context.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/app/test">
  <Resource auth="Container" defaultAutoCommit="false" description="dbcp" driverClassName="com.mysql.jdbc.Driver" initialSize="1" maxActive="10" maxIdle="5" maxWait="1000" minIdle="10" name="jdbc/Test" password="${database.password}" poolPreparedStatements="true" type="javax.sql.DataSource" url="${database.url}" username="${database.username}"/>
  <Realm className="org.apache.catalina.realm.DataSourceRealm" dataSourceName="jdbc/Test" localDataSource="true" roleNameCol="role" userCredCol="pass" userNameCol="user" userRoleTable="roles" userTable="users"/>
  <Valve className="org.apache.catalina.valves.AccessLogValve" fileDateFormat="yyyy-MM-dd" pattern="combined" prefix="test-access" resolveHosts="false" rotatable="true" suffix=".log"/>
</Context>

, где database.url - это jdbc: mysql: //127.0.0.1: 3306 / test? AutoReconnect = true

hibernate.cfg.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="connection.datasource">java:/comp/env/jdbc/Test</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
        <property name="cache.use_query_cache">false</property>
        <property name="cache.use_minimal_puts">false</property>
        <property name="max_fetch_depth">3</property>
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="generate_statistics">true</property>
        <property name="hbm2ddl.auto">validate</property>
        <property name="current_session_context_class">thread</property>
        <mapping class="Test.Users"/>
        <mapping class="Test.Roles"/>
        <!-- entity bean defs -->
    </session-factory>
</hibernate-configuration>

Ответы [ 2 ]

1 голос
/ 19 сентября 2010

Распространенными причинами для java.sql.SQLException: No suitable driver являются

  • неправильный URL-адрес
  • , за которым следует драйвер не загружен.

И действительно, следующая строка явно указывает на что-то не так.

Cannot create JDBC driver of class 'com.mysql.jdbc.Driver' for connect URL <b>'http://maven.apache.org'</b>

Строка соединения JDBC не может быть http://maven.apache.org.

Проверьте вашу сборку, что-то IS неверно (похоже, происходит какая-то неожиданная фильтрация),

Но вы не даете достаточно подробностей для более подробного ответа.

0 голосов
/ 19 сентября 2010

Похоже, что вы сказали Hibernate использовать предоставленный контейнер DataSource, который, в свою очередь, не может найти JDBC-драйвер.

Если это так, проблема в том, что код, загруженный загрузчиком класса контейнера, не может видеть кодпредусмотрено в вашей WAR.

Вы должны добавить jar драйвера в папку расширения контейнера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...