ClassNotFoundException при запуске JAR, без ошибок при работе в IntelliJ IDEA

я только начал создавать приложения Java (у меня есть опыт работы с .NET), и я пытался создать небольшое тестовое приложение, весь код которого таков:

package com.company;

import com.microsoft.sqlserver.jdbc.SQLServerDataSource;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Main {

    public static void main(String[] args) throws SQLException {
        System.out.println("Buna lume!");

        SQLServerDataSource ds = new SQLServerDataSource();
        ds.setIntegratedSecurity(true);
        ds.setServerName("localhost");
        ds.setPortNumber(1433);
        ds.setDatabaseName("Test");
        Connection con = ds.getConnection();

        String SQL = "SELECT * FROM Test WHERE ID = ?";
        PreparedStatement stmt = con.prepareStatement(SQL);
        stmt.setInt(1, 2);
        ResultSet rs = stmt.executeQuery();

        while (rs.next()) {
            System.out.println(rs.getInt(1) + ", " + rs.getString(2));
        }
        rs.close();
        stmt.close();

        con.close();
    }
}

Если я запускаю приложение в IDE (IntelliJ IDEA 12.1.6 Community Edition), имея SQL Server, приложение работает нормально, выполняя именно то, что должно.

Драйвер SQL Server загружается из Microsoft и добавляется в качестве внешней библиотеки. Я создал артефакт в виде файла JAR:

Теперь, если я включу sqljdbc4.jar в cliTest.jar (мой JAR), полученный JAR будет толстым (550 КБ и также включает в себя классы в этом JAR). Или я могу исключить это. В любом случае, работает

java -jar cliTest.jar

Результаты в

Buna lume!
Exception in thread "main" java.lang.NoClassDefFoundError: com/microsoft/sqlserv
er/jdbc/SQLServerDataSource
        at com.company.Main.main(Main.java:15)
Caused by: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLSer
verDataSource
        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

Бьюсь об заклад, яЯ пропускаю что-то довольно простое, но я просто могуне могу понять, что именно вызывает это.

LE1: я пытался добавить sqljdbc4.jar (хотя это некажется необходимым) и sqljdbc_auth.dll в каталоге, содержащем JAR, но все еще без изменений.

Позже правка 2: по мотивам Николаяответь ямы сделали следующее:

Удалил существующий артефактСоздан новый артефакт так:

.. и привел это:

Построить -> Построить артефакты -> cliTest.jar -> перестраивать

CMD Подскажите в папке, содержащей:

[cliTest.jar было создано 566 КБ]

java -jar cliTest.jar

Теперь я получаю:

Exception in thread "main" java.lang.SecurityException: Invalid signature file d
igest for Manifest main attributes
    at sun.security.util.SignatureFileVerifier.processImpl(Unknown Source)
    at sun.security.util.SignatureFileVerifier.process(Unknown Source)
    at java.util.jar.JarVerifier.processEntry(Unknown Source)
    at java.util.jar.JarVerifier.update(Unknown Source)
    at java.util.jar.JarFile.initializeVerifier(Unknown Source)
    at java.util.jar.JarFile.getInputStream(Unknown Source)
    at sun.misc.URLClassPath$JarLoader$2.getInputStream(Unknown Source)
    at sun.misc.Resource.cachedInputStream(Unknown Source)
    at sun.misc.Resource.getByteBuffer(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    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)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

Ответы на вопрос(3)

Ваш ответ на вопрос