java - Maven 和 Java 的 ClassNotFoundException

标签 java mysql eclipse maven jar

我制作了一个小型桌面应用程序,并使用 MySQL 连接器来处理数据库。之前我已经将 MySQL 连接器添加到类路径中。

之后,我添加了 mysql 连接器依赖项:

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

构建成功,但是当我从命令行启动 .jar 文件时,出现此错误:

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

当我用 java -cp mysql-connector-java-5.1.29.jar -jar NameOfJar.jar 启动我的程序时,没有问题,程序正常启动,但理想情况下我会喜欢“打包”连接器或拥有“lib”文件夹,而不是键入 java -cp mysql [...](双击文件打开应用程序)。

谢谢, 超速301

最佳答案

或者,您也可以使用阴影插件:

           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <configuration>
                    <createDependencyReducedPom>false</createDependencyReducedPom>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <artifactSet>
                                <excludes>
                                    <exclude>org.slf4j*</exclude>
                                </excludes>
                            </artifactSet>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

它会创建一个额外的 jar,其中包含所有依赖项,但您明确排除的依赖项除外,如上例所示 (org.slf4j*)。请注意,这会将您的常规 jar 替换为包含所有依赖项的更胖的 jar。如果两者都需要,则应使用 maven-assembly

关于java - Maven 和 Java 的 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22271770/

相关文章:

eclipse - 无法使用 gwt-maven-plugin 在 eclipse 中创建项目

javascript - Eclipse Javascript 格式化程序(ctrl-shift-f)

java - Influx 测量 Java POJO - 缺少 @TimeColumn 装饰器(但有 @Measurement 和 @Column)

java - gradle 构建时出现 StackOverflowError

java - Java中使用递归分离ArrayList的偶数和奇数索引

android - Json 数组未在 ListView 中正确显示

php - 如何将一个或多个字段忽略空字段更新到mysql数据库中?

java - 使用 <object> 标记的 Java Applet 中的 ClassNotFoundException

mysql - MySQL如何检测非数字字符?

java - 如何调用监听器以检查树选择对话框