Возможно включать dll в jar с затмением?

У меня есть приложение, которое использует jar. Этот jar зависит от dll, а следовательно я включил dll в папку внутри проекта затмения. Проблема что, когда я экспортирую проект с "Runnable jar file-> Package required libraries into generated JAR" только экспортирует jar без dll. Есть какой-то способ это делать правильно?

Важно: Мне хотелось бы распространять dll, упакованный в jar. Он больше, чем вероятный, что пользователи моего приложения не обладают установленным dll.

1
задан 19.03.2016, 07:28
2 ответа

Ввиду характеристик твоей сцены:

  • Проект, созданный в Затмении
  • Проект - типа Java чисто, не используя Ant, Maven, Gradle ни сходные

Самая простая форма будет состоять в том, чтобы создавать добавочную папку в твоем проекте, давайте звонить ему lib, размещать DLL внутри lib и потом конфигурировать lib для того, чтобы это была папка, которая содержит шрифты в проекте. Считай, что, когда экспортировать проект как JAR, что сделает Затмение, будет состоять в том, чтобы упаковывать все компоненты, которые находятся в папках исходного кода в JAR. Здесь пример легкого понимания.

  1. В Затмении, давайте верить в проект тип Java, названный PruebaAgregarArchivo
  2. В корне проекта, давайте верить в папку lib
  3. В папке lib, давайте верить в так называемый текстовый файл datos.txt. Открой файл и помести его как контент "Привет мир!" без кавычек. Сохраняй это и закрой это.
  4. В папке шрифтов, давайте верить в пакет и внутри него класс, который они будут служить для того, чтобы подтвердить, что файл был упакован JAR, и который может соглашаться на него изнутри классов Java. В этом классе добавляют следующий код (имя пакета и класса они неуместные для примера):

    //JDK mínimo: 1.7. Si utilizas una versión anterior, adapta el código
    public static void main(String[] args) {
        //se prueba el acceso al archivo datos.txt desde dentro del jar
        try (BufferedReader br = new BufferedReader(new InputStreamReader(Main.class.getClassLoader().getResource("datos.txt").openStream()))) {
            System.out.println(br.readLine());
        }catch (Exception e) {
            e.printStackTrace(System.out);
        }
    }
    
  5. Прямой Click в папку lib, выбирает Буильд Пат / Использовал эксперт Соурсе Фольдер

introducir la descripción de la imagen aquí

  1. Экспортирует твой проект такой Java как Руннабле Хар (Хар Эхекутабле). Предложи его, как назовите доказательство - agregar-archivo.jar

  2. Выполни jar с твоей консоли. У тебя должен бы быть результат, сходный с этим:

introducir la descripción de la imagen aquí

Для твоего случая в особенности, вместо того, чтобы использовать файл, datos.txt ты используешь твой DLL или любой другой ресурс, в котором ты нуждаешься в твоем проекте, и который будет упакован вместе со шрифтами в твоем JAR.

2
ответ дан 24.11.2019, 14:43

Ты можешь регистрировать снова path, где у тебя есть твой файл.DLL. В menГє, opciГіn Run> Run Configurations...> Arguments, добавляет path, который содержит твой.DLL

introducir la descripción de la imagen aquí

0
ответ дан 24.11.2019, 14:43
  • 1
    Спасибо хороший вклад, но я нравиться и # 237; чтобы распространять dll внутри jar, потому что от этой формы, что ты показываешь мне маршрут, он зависит, откуда я делаю разработку. Я нашел, что с " export - и gt; jar file" и включая " Export java source поля and resources" если он упаковывает все, но он не находит jar, так как он посылает мне исключение NoClassDefFoundError в 1er import jar – abrahamhs 19.03.2016, 01:59

Теги

Похожие вопросы