Сведения о вопросе

Codeliver

10:11, 9th August, 2020

Теги

JNI и Java: ant вызов make или make вызов ant?

Просмотров: 476   Ответов: 5

Я как раз собираюсь совершить свое первое путешествие в мир JNI (Java Native Interface), чтобы предоставить уведомления об изменении файловой системы от специфичного для платформы кода C/C++ до Java. То есть, если кто-то не предложит какую-то блестящую библиотеку для этого, которую я пропустил.

Будучи новичком в JNI, мне удалось найти много документации на стороне интерфейса и стороне генерации библиотеки, но я не нашел много о создании родной библиотеки.

У меня есть существующая сборка на основе ant для уже существующего источника Java, поэтому я пытаюсь решить, должен ли я получить ant для вызова make для создания библиотеки или лучше всего получить make для вызова ant после создания библиотеки?

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



  Сведения об ответе

lats

06:05, 28th August, 2020

В качестве более простой альтернативы JNI, попробуйте JNA: https://jna.dev.java.net/, может решить эту проблему для вас и быть проще (предполагая, что он может делать то, что вы хотите).


  Сведения об ответе

darknet

15:43, 7th August, 2020

Мне категорически не нравится из-за его неявных правил и лечении whitespace. Лично я бы использовал cpp tasks ( http://ant-contrib.sourceforge.net/cpptasks/index.html ) для выполнения своей компиляции C. Они не так гибки, как make, но они также гораздо менее сложны, и это будет означать, что вам не придется обременять своих разработчиков обучением make.


  Сведения об ответе

ЯЯ__4

16:17, 18th August, 2020

Я сейчас работаю над чем-то подобным. Имейте в виду, что использование swig из swig.org часто проще, поскольку он генерирует заглушки для собственной библиотеки для вас.

Короткий ответ на ваш вопрос заключается в том, что файл ant должен запускать файл make после того, как библиотека java уже была собрана, поскольку собственная библиотека зависит от заголовка swig, сгенерированного из файлов класса java.

Если вы очень хорошо знакомы с ant и не хотите изучать новую систему, то http://ant-contrib.sourceforge.net/cpptasks/index.html , также связанный другим плакатом, позволит вам построить c++ в ant.


  Сведения об ответе

SSESION

19:13, 5th August, 2020

Я бы полностью пропустил JNI и использовал внешнюю программу, которая пишет уведомления на стандартном выходе. Java может затем просто считывать из выходного потока программы и генерировать любое событие, которое необходимо. JNI - это слишком много работы, если все, что вы хотите, - это отправлять простые уведомления.

Кроме того, на Linux вы можете просто запустить "inotifywait" (с некоторыми подходящими параметрами см. "man inotifywait").


  Сведения об ответе

P_S_S

03:37, 10th August, 2020

Вы также можете попробовать задачи terp C++ в Codemesh . Они не являются свободными, но они предлагают высокий уровень абстракции в сочетании с возможностью обнаружения / указания компилятора C++ и возможностью итерации по более чем одной архитектуре компилятора/процессора/конфигурации компилятора для мультиплатформенных сборок.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться