Mysql
 sql >> Base de données >  >> RDS >> Mysql

Maven - java.lang.ClassNotFoundException :com.mysql.jdbc.Driver

Changez la portée en compile :

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.17</version>
    <type>jar</type>
    <scope>compile</scope>
</dependency>

Ce qui - puisqu'il s'agit de la portée par défaut correspond à omettre la définition de la portée - même compte pour le type :

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.17</version>
</dependency>

Jetez un oeil à ceci :https://maven.apache .org/guides/introduction/introduction-to-dependency-mechanism.html pour des informations détaillées sur la portée.

Voici une information rapide pour votre arrière-plan :

Vous avez spécifié le pilote JDBC pour avoir une portée runtime . La plupart des IDE ignoreront de toute façon les portées et ajouteront toutes vos dépendances à leur classpath (par exemple, le classpath utilisé lorsque vous exécutez quelque chose en dehors d'eclipse. Par la portée runtime vous dites à maven qu'il ne doit pas emballer cette dépendance dans votre fichier jar final puisque l'environnement d'exécution "fournira cette dépendance à runtime . Par exemple. vous devrez soit l'ajouter manuellement au classpath lors de l'appel de votre jar, soit modifier la portée en compile ce qui conduira à ce que le driver-jar soit emballé à l'intérieur de votre jar et disponible au moment de l'exécution.