Сбой сборки JavaCPP на macOS после обновления Xcode 12.2 из-за отсутствия JavaVM framework

#java #xcode #macos-big-sur #javacpp

#java #xcode #macos-big-sur #javacpp

Вопрос:

Недавно я обновился до версии Xcode 12.2 с версии 12.1. Моя сборка maven проекта javacpp начала завершаться сбоем в этот момент на шаге clang со следующей командой и ошибкой:

 clang   -I/Users/<username>/git/<product>-javacpp/src/main/cpp -I/usr/local/include -I/Library/Java/JavaVirtualMachines/jdk-14.0.2.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk-14.0.2.jdk/Contents/Home/include/darwin /Users/<username>/git/<product>-javacpp/target/classes/com/<product>/javacpp/video/ffmpeg/jniAvFormatCallbackFactory.cpp /Users/<username>/git/<product>-javacpp/src/main/java/jnijavacpp.cpp -march=x86-64 -m64 -O3 -Wl,-rpath,@loader_path/. -Wall -fPIC -dynamiclib -undefined dynamic_lookup -o libjniAvFormatCallbackFactory.dylib -L/usr/local/lib -Wl,-rpath,/usr/local/lib -lavformat -lavutil -framework JavaVM

ld: framework not found JavaVM
  

Я создаю с macOS 10.15.7 и JavaCPP 1.4.4

Переустановив каждую версию Xcode, я подтвердил, что эта платформа присутствует в Xcode 12.1 и была удалена из Xcode 12.2. Теперь я могу создавать с 12.1, но мне нужно понять дальнейший путь, чтобы принять обновления Xcode в будущем.

Ответ №1:

Вы можете безопасно заменить -framework JavaVM на -framework JavaNativeFoundation . У меня это сработало.

S.

Ответ №2:

Xcode 12.2 теперь использует набор фреймворков macOS 11 (Big Sur), который больше не включает фреймворк JavaVM. Решением здесь является обновление сборки maven до недавно доступной JavaCPP 1.5.4. Эта версия больше не добавляет опцию ‘-framework JavaVM’ в команду clang и по-прежнему правильно строит / связывает.

Это изменение, похоже, устраняет проблему: https://github.com/bytedeco/javacpp/issues/417

pom.xml необходимы обновления как для плагина org.bytedeco javacpp, так и для зависимостей.

Ответ №3:

Чтобы основываться на ответе NaderNader, согласно документации Apple, JavaVM.framework был помечен как устаревший начиная с OS X версии 10.7.

Мне не удалось найти никаких упоминаний об изменении в журнале изменений Xcode 12.2. Мне нужно показать надлежащую документацию для проверки версии, поэтому я проверяю версию ОС вместо версии Xcode.