Ваша настоящая проблема заключается в том, что вы не знаете, что делать с феноменом "classpath".
На самом деле, classpath является своего рода коллекцией путей файловой системы диска, которая указывает на весь файл (ы) .jar
и / или на некоторую корневую папку с файлами .class
, где виртуальная машина Java должна поиск классов для импорта и загрузки.
Вы можете указать путь к классам во время компиляции и выполнения, используя аргументы -classpath
или -cp
javac.exe
и java.exe
. -cp
- это просто сокращение, оно ничем не отличается. Тогда у вас есть таинственная переменная окружения %CLASSPATH%
, которую вы должны просто забыть. Это плохая вещь, которая была призвана упростить начальные пути управления классами, но в конце концов это только запутало их.
Поскольку вы используете Class#forName()
для загрузки драйвера, вам нужно иметь его только в classpath во время выполнения, а не во время компиляции. Итак, вот основной пример, как его выполнить:
java -cp .;c:/path/to/mssql-jdbc-driver.jar com.example.YourClass
Видите ли, путь к классам существует из двух частей: .
, который представляет текущий рабочий каталог, и c:/path/to/mssql-jdbc-driver.jar
, который должен быть абсолютным путем к файлу JAR. ;
- это просто разделитель пути (в Windows; в Unix и клонах это должно быть двоеточие :
). Примечание: если путь содержит пробелы, например, c:/spacy path to/file.jar
, тогда вам нужно обернуть отдельный путь двойными кавычками.
Если вы используете IDE, такую как Eclipse, то обычной практикой является создание в проекте папки, в которую можно поместить все файлы JAR сторонних производителей, которые требуются для проекта. Создайте папку проекта с именем lib
, поместите туда драйвер JDBC и щелкните правой кнопкой мыши проект> Свойства > Путь сборки Java > Библиотеки > Добавление JAR-файлов > Выберите файл JAR, который вы уронили в проект lib
> OK .
Так и должно быть. Надеюсь, это поможет.