使用外部jar时ClassNotFoundException

时间:2015-10-02 17:25:06

标签: java jdbc intellij-idea

我正在使用IntelliJ Idea。我已经构建了我的应用程序并将其创建为.jar文件。该程序使用外部.jar文件作为其数据库驱动程序。

当我从IDE运行程序时,它工作正常。当我尝试在IDE外部运行.jar文件时,它会报告以下异常:

Exception in thread "main" java.lang.NoClassDefFoundError: com/microsoft/sqlserver/jdbc/SQLServerException
        at ca.vdts.dbupdate.Main.main(Main.java:10)
Caused by: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerException
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        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)

sqljdbc42.jar文件的目录位于清单中。 我在Windows上,我想通过点击“.jar”来运行它。文件。 应用程序.jar文件和sqljdbc42.jar文件都在同一目录中。在命令行上,执行...

C:\Users\admin\IdeaProjects\DBUpdate\out\artifacts\DBUpdate>java -classpath .\sqljdbc42.jar;DBUpdate.jar -jar DBUpdate.jar

...导致同样的错误:

Exception in thread "main" java.lang.NoClassDefFoundError: com/microsoft/sqlserver/jdbc/SQLServerException
        at ca.vdts.dbupdate.Main.main(Main.java:10)
Caused by: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerException
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        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)
        ... 1 more

1 个答案:

答案 0 :(得分:3)

尝试使用以下命令运行您的应用程序:

java -classpath sqljdbc42.jar:Application.jar -jar Application.jar

:替换为Windows下的;