java.lang.ClassNotFoundException: com.mysql.jdbc.Pilote (maven + jboss)
maven 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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Test</groupId>
<artifactId>Test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>Test</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.18</version>
</dependency>
</dependencies>
Dans le code Im essayant d'exécuter Class.forName("com.mysql.jdbc.Driver")
.
J'obtiens ceci:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Mais j'ai vérifié, j'ai mysql.jar dans jboss-as-7.0.2.Final\standalone\deployments\Test.war\WEB-INF\lib
et il a com.mysql.jdbc.La classe du pilote.
Le
Quel est le nom exact de
Nᴇᴡᴛᴏɴ Thx, je ne sais pas, je n'try.@ring porteur mysql-connector-java-5.1.18.jar
comment êtes-vous de l'exécution de votre code? via la construction ou de l'IDE ou en ligne de commande ?
via IDE qui a JBoss, Maven plugin pour déployer des projets
servlet-api
de dépendance doit être marqué comme provided
, btw.Quel est le nom exact de
mysql.jar
fichier que vous avez dans ..WEB-INF\lib
?Nᴇᴡᴛᴏɴ Thx, je ne sais pas, je n'try.@ring porteur mysql-connector-java-5.1.18.jar
comment êtes-vous de l'exécution de votre code? via la construction ou de l'IDE ou en ligne de commande ?
via IDE qui a JBoss, Maven plugin pour déployer des projets
OriginalL'auteur itun | 2011-11-23
Vous devez vous connecter pour publier un commentaire.
En règle générale, vous ne devriez pas être compris vos pilotes JDBC dans votre fichier war.
Je vous suggère de marquer le pilote et l'ajouter au répertoire lib du serveur.
PS. Je ne suis pas sûr pourquoi vous seriez à l'aide de
dans votre code. Pourquoi ne pas laisser le contenir gérer vos connexions et les transactions?
OriginalL'auteur James DW
Cette erreur s'est produite parce que votre mysql pot n'est pas sur votre chemin de classe. Si vous utilisez maven,
OriginalL'auteur Vivek Kothari
Il semble que vous êtes à l'aide de JBoss AS7. Vérifiez les instructions ici: https://community.jboss.org/wiki/DataSourceConfigurationInAS7
Fondamentalement, vous devriez
Classe.forName() est une expression couramment utilisée lorsque les données sources ne sont pas fournis par le conteneur. Dans des serveurs Java EE modernes, ils sont fournis.
OriginalL'auteur eis
J'ai eu un peu différents cas d'utilisation. J'ai été en utilisant apache BasicDataSource dans une application autonome.
J'ai eu cette exception parce que j'ai été appeler
setDriverClassName
aveccom.mysql.jdbc.Driver.class.toString()
au lieu de"com.mysql.jdbc.Drive"
comme une Chaîne de caractères (donc de temps de compilation de contrôle permet de s'assurer qu'il n'y a pas de faute de frappe ou d'un Pilote de l'emplacement n'a pas changé dans une version de mise à niveau, etc...).Mais!
Lorsque vous regardez Pilote de mise en œuvre, il a un bloc d'initialisation statique:
Quand j'ai écrit
com.mysql.jdbc.Driver.class.toString()
cette initialisation bloc exécuté trop tôt et a causé plus tard trompeuseClassNotFoundException
à être jetés. Une fois que je suis passé à"com.mysql.jdbc.Driver"
ma demande a commencé à travailler.C'est un cas statique devient mal 🙂
OriginalL'auteur uthomas