JavaCPP builds failing on macOS after Xcode 12.2 update due to missing JavaVM framework

こ雲淡風輕ζ 提交于 2021-01-05 11:25:33

问题


I recently updated to Xcode version 12.2 from 12.1. My maven build of a javacpp project began failing at that point on the clang++ step the following command and error:

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

I am building with macOS 10.15.7 and JavaCPP 1.4.4

By reinstalling each Xcode version, I confirmed that this framework is present in Xcode 12.1 and has been removed from Xcode 12.2. I can build now with 12.1, but need to understand a path forward to accept Xcode upgrades in the future.


回答1:


Xcode 12.2 now uses the macOS 11 (Big Sur) set of frameworks, which no longer includes the JavaVM framework. The solution here is an upgrade of the maven build to the recently available JavaCPP 1.5.4. This version no longer adds the '-framework JavaVM' option to the clang++ command, and still builds/links correctly.

This change appears to address the issue: https://github.com/bytedeco/javacpp/issues/417

The pom.xml needed updates to both the org.bytedeco javacpp plugin and dependency.




回答2:


To build on NaderNader's answer, according to Apple documentation JavaVM.framework has been marked deprecated as of OS X v10.7.

I was unable to find any mention of the change in the Xcode 12.2 change log. I need to show proper documentation for a version check, so I check the OS version instead of the Xcode version.



来源:https://stackoverflow.com/questions/64844595/javacpp-builds-failing-on-macos-after-xcode-12-2-update-due-to-missing-javavm-fr

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!