问题
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