Использовать .jar API библиотеки Java в C #? - PullRequest
50 голосов
/ 04 февраля 2009

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

Я пытаюсь использовать API Java, заданный в виде файла .jar, в моем приложении C # .net. Я не знаю много Java, но этот файл .jar говорит "нет атрибута манифеста основного класса", когда я пытаюсь запустить его, так что это означает, что это библиотека? Этот Java API также поставляется с файлом .java, который показывает, как использовать библиотеку, но я не вижу кода внутри .jar.

Я нашел этот вопрос на этом сайте, и один из ответов гласит: «Простым способом вы можете упаковать свои классы Java в файл JAR, а затем в C # использовать класс Process для выполнения и отобразить поток ввода-вывода. " Я почти знаком с классом Process в C #, но я не понимаю, как я мог бы использовать его для использования библиотеки Java в моем проекте C # .net.

Возможно ли это? или этот ответ был неверным?

Если да, не могли бы вы объяснить, как я могу использовать библиотеку .jar в своем приложении C #.

Ответы [ 2 ]

71 голосов
/ 04 февраля 2009

Вы можете сделать это, используя IVKM.Net. IVKM.NET включает в себя приложение под названием ikvmc. Вот документация для этого инструмента:

http://www.ikvm.net/userguide/ikvmc.html

Чтобы использовать его, скомпилируйте ваш код Java в Jar.

Затем запустите программу ikvmc:

ikvmc myCode.jar

Если ваш jar-файл содержит функцию main (), он будет преобразован в исполняемый файл, который можно запустить в CLR. В противном случае он будет преобразован в DLL. Чтобы использовать библиотеки DLL в вашем проекте, просто добавьте их в качестве ссылок в Visual Studio, и тот же API, который был доступен вам в Java, будет доступен в вашем приложении .Net.

Вы также можете включить dll IKVM.GNU.Classpath.dll из ikvmc и использовать стандартные библиотеки классов Java в своем приложении.

6 голосов
/ 04 февраля 2009

Взгляните на IKVM ... у него есть инструменты, чтобы дать вам некоторый уровень взаимодействия. Когда вы говорите Java API, я предполагаю, что вы хотите вызвать некоторую функциональность из jar, а не просто выполнить ее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...