Создайте так вместо dylib используя плагин nar maven
У меня теперь есть пльява на Mac. pljava использует maven и плагин maven nar для сборки. Эта сборка maven-нар в настоящее время создает dylib вместо.so. Похоже, что postgres вместо этого хочет.so. Это результат включения трассировки postgres:
2014-09-26 10:12:59 EDT STATEMENT: CREATE FUNCTION sqlj.java_call_handler() RETURNS language_handler AS 'pljava' LANGUAGE C
2014-09-26 10:12:59 EDT DEBUG: bind <unnamed> to <unnamed>
2014-09-26 10:12:59 EDT LOG: execute <unnamed>: CREATE FUNCTION sqlj.java_call_handler() RETURNS language_handler AS 'pljava' LANGUAGE C
2014-09-26 10:12:59 EDT DEBUG: ProcessUtility
2014-09-26 10:12:59 EDT DEBUG: find_in_dynamic_libpath: trying "/Library/PostgreSQL/9.1/lib/postgresql/pljava"
2014-09-26 10:12:59 EDT DEBUG: find_in_dynamic_libpath: trying "/Library/PostgreSQL/9.1/lib/pljava"
2014-09-26 10:12:59 EDT DEBUG: find_in_dynamic_libpath: trying "/Library/PostgreSQL/9.1/share/pljava/pljava"
2014-09-26 10:12:59 EDT DEBUG: find_in_dynamic_libpath: trying "/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/jre/lib/pljava"
2014-09-26 10:12:59 EDT DEBUG: find_in_dynamic_libpath: trying "/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/jre/lib/server/pljava"
2014-09-26 10:12:59 EDT DEBUG: find_in_dynamic_libpath: trying "/Library/PostgreSQL/9.1/lib/postgresql/pljava.so"
2014-09-26 10:12:59 EDT DEBUG: find_in_dynamic_libpath: trying "/Library/PostgreSQL/9.1/lib/pljava.so"
2014-09-26 10:12:59 EDT DEBUG: find_in_dynamic_libpath: trying "/Library/PostgreSQL/9.1/share/pljava/pljava.so"
2014-09-26 10:12:59 EDT DEBUG: find_in_dynamic_libpath: trying "/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/jre/lib/pljava.so"
2014-09-26 10:12:59 EDT DEBUG: find_in_dynamic_libpath: trying "/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/jre/lib/server/pljava.so"
2014-09-26 10:12:59 EDT ERROR: could not access file "pljava": No such file or directory
Итак, мой вопрос - как я могу заставить maven nar выводить файл.so вместо.dylib? Если я использую тип "shared", создается dylib, если я использую тип "plugin", создается.bundle, и если я использую тип "static", ссылка завершается ошибкой.
1 ответ
Я решил свою проблему. Использование типа "плагин" создает правильный тип файла. Ответ Майлза на этот вопрос помог мне понять это:
Каковы различия между.so и.dylib на osx?
Mac OS рекомендует расширение.bundle для загружаемых модулей, но портированные приложения (такие как PostgreSQL) по-прежнему хотят использовать.so. После того, как я изменил имя файла на pljava.so, PostgreSQL смог успешно загрузить модуль.