Когда Java-код загружает собственную библиотеку (обычно выполняется через System.load()
), этот вызов является собственным вызовом ОС. Фактическая загрузка DDL выполняется ОС (пожалуйста, исправьте меня, если это не так). В этом случае ОС потребуется определенный путь к DLL для загрузки. Если библиотеки DLL находятся внутри какого-либо jar-файла, ОС не распознает структуру jar-файлов (это может быть интерпретировано только во время выполнения java), поэтому эти файлы не будут найдены при упаковке внутри jar-файла.
В качестве примера, для стандартного дистрибутива JDK все файлы классов упакованы в файл rt.jar
, тогда как все библиотеки DLL собственного кода (сокеты, awt и т. Д.) Находятся в отдельном месте (jre/bin
). Поэтому я бы предложил создать два набора файлов: один jar и другие DLL. Создать ZIP архив. Теперь, если кому-то нужно это использовать, распакуйте его, сохраните jar в classpath и DLL в PATH.