Mysql
 sql >> Database >  >> RDS >> Mysql

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

Cambia l'ambito in compile :

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

Che, poiché è l'ambito predefinito, corrisponde all'assenza della definizione dell'ambito, lo stesso vale per il tipo:

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

Dai un'occhiata a questo:https://maven.apache .org/guides/introduction/introduction-to-dependency-mechanism.html per informazioni dettagliate sullo scopo.

Ecco una rapida informazione per il tuo background:

Hai specificato che il driver JDBC ha un ambito runtime . La maggior parte degli IDE ignorerà comunque gli ambiti e aggiungerà tutte le tue dipendenze alle loro classpath (ad esempio il classpath utilizzato quando si esegue qualcosa al di fuori di eclipse. Dall'ambito runtime stai dicendo a Maven che non deve comprimere quella dipendenza nel tuo jar finale poiché l'ambiente di esecuzione "fornirà quella dipendenza in runtime . Per esempio. dovresti aggiungerlo manualmente al percorso di classe quando chiami il tuo jar o cambiare l'ambito in compile che porterà il driver-jar ad essere impacchettato all'interno del tuo jar e disponibile in fase di esecuzione.