Преобразование dll в jar

Я пытаюсь найти способ конвертировать dll в файл jar. У меня есть приложение .net, которое взаимодействует с java-приложением. Основными объектами являются объекты .net, которые я должен дублировать вручную в java. Я читал об IKVM, но кажется, что он преобразует только jar-файлы в dll, а не наоборот.

Изменить: если есть инструмент, который создает классы java из dll, это тоже нормально. заранее спасибо


person Dennis Nerush    schedule 02.06.2013    source источник
comment
Jar и dll генерируются двумя разными компиляторами, не так ли.   -  person mjosh    schedule 02.06.2013
comment
Верно. Я пытаюсь найти инструмент, который будет читать dll и компилировать его в банку. Или создаст соответствующие классы Java.   -  person Dennis Nerush    schedule 03.06.2013
comment
Я сильно сомневаюсь, что такой инструмент существует или даже возможен.   -  person Hovercraft Full Of Eels    schedule 03.06.2013
comment
Я думаю, что могу предложить вам взглянуть на проект sqlite-jdbc. ЭТО НЕ ТО, ЧТО ВЫ ИЩЕТЕ. Тем не менее, он реализует идею, которую вы хотите реализовать: он берет dll-библиотеку для sqlite (и linux/macos, но это не главное) и делает для нее jni-оболочку. Все эти разделяемые библиотеки упакованы в финальную банку, поэтому java-драйвер может вызывать нативную встроенную библиотеку. Я уверен, что вы можете посмотреть на процесс сборки и скопировать свой проект. Его исходный код можно найти здесь: bitbucket.org/xerial/sqlite-jdbc   -  person infthi    schedule 03.06.2013


Ответы (2)


Нет такого инструмента.

dll — это изначально скомпилированная библиотека. Это означает, что он был скомпилирован в машинный код. Вероятно, скомпилирован компилятором C/C++/C#.

Файл jar представляет собой zip-файл, содержащий файлы «.class», которые представляют собой файлы, скомпилированные в «код виртуальной машины Java». Вероятно, скомпилирован компилятором java/clojure/scala.

Это две очень разные несовместимые вещи.

Нет ничего невозможного в создании такого инструмента, который бы выполнял этот перевод, но это, безусловно, было бы чрезвычайно сложной задачей, так как это повлекло бы за собой перевод из одного машинного кода в другой и потребовало бы решения множества проблем, таких как решение зависимостей, различные типы структура и т. д.

ОДНАКО, я предполагаю, что вы хотите сделать это, потому что хотите использовать DLL в каком-то java-коде. Это отчасти возможно, но на самом деле довольно сложно. Вам нужно будет использовать JNI.

Взгляните на этот вопрос, так как он может помочь вам достичь того, что вы хотите сделать: Вызов библиотеки C++ из Java

person chamakits    schedule 03.06.2013
comment
тем не менее, это обычная практика для переноса файлов dll в файлы jar. - person bvdb; 14.06.2017

На самом деле это несложная задача. Преобразование .dll в .jar так же просто, как использование com4j и пары команд в командной строке.

  1. Скачать com4j.
  2. Откройте командную строку и перейдите в каталог com4j на предыдущем шаге.
  3. Выполните приведенную ниже команду.

java -jar tlbimp.jar -o outputFolder -p nameOfPackage "pathToFile"

  1. Затем сотрясите результаты следующим образом:

    jar cf требуемыйJarName.jar папкаYouWantJard

person Community    schedule 05.08.2015