Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.ClassNotFoundException:com.mysql.jdbc.Driver在IntelliJ中使用Maven_Java_Maven_Jdbc_Intellij Idea - Fatal编程技术网

java.lang.ClassNotFoundException:com.mysql.jdbc.Driver在IntelliJ中使用Maven

java.lang.ClassNotFoundException:com.mysql.jdbc.Driver在IntelliJ中使用Maven,java,maven,jdbc,intellij-idea,Java,Maven,Jdbc,Intellij Idea,我想尝试一个示例JDBC练习,所以我使用Maven Quickstart原型创建了一个项目 public class App { static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost:3306/testdb"; static final String USER = "root"; static

我想尝试一个示例JDBC练习,所以我使用Maven Quickstart原型创建了一个项目

public class App {
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://localhost:3306/testdb";

    static final String USER = "root";
    static final String PASS = "password";

    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        try{
            Class.forName("com.mysql.jdbc.Driver");

            System.out.println("Connecting to database...");
            conn = DriverManager.getConnection(DB_URL,USER,PASS);

            System.out.println("Creating statement...");
            stmt = conn.createStatement(); 
            . . . .
            . . . .
当我试着运行它时

mvn package
java -cp target/simple-java-1.0-SNAPSHOT.jar com.test.App
我得到:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at com.test.App.main(App.java:24)
但是,如果我只是尝试直接运行应用程序,比如,在IntelliJ中作为应用程序运行,它就可以正常工作。 我试着加了一个罐子,但还是不起作用


我在这里缺少什么?

我也面临同样的问题。我可以通过添加MySQL连接器来解决这个问题。(我添加的唯一插件是Tomcat Maven插件。)

您不需要
Class.forName(“com.mysql.jdbc.Driver”)更多

  • Java版本:10.0.1
  • Intellij IDEA版本:2018.1.8(社区版)

我猜您并没有使用Maven shade插件创建一个包含依赖项的胖JAR。自2007年以来,您甚至不需要
Class.forName()
行,但您确实需要类路径上的MySQL JDBC驱动程序JAR文件。您应该使用-jar选项而不是-cp选项运行它,并确保Manifest主类条目指定
com.test.App
。这样,清单自己的类路径条目生效。为什么不直接从intellij运行代码呢?Java-cp还包括MySQL jar。它是从IDE工作的所有JAR都在类路径IDE中。事实上我已经弄明白了。我需要一个插件来复制依赖项,然后
java-cp target/*com.test.App