LibCarbon failure on MacOS Big Sur
zhye9452 opened this issue ยท 12 comments
Play Version
2.8.2
API
Scala
Operating System
MacOS Big Sur Developer Beta Seed 1
JDK
JDK 11
Library Dependencies
Expected Behavior
sbt run
Actual Behavior
sbt run
fails to run with below exception
[error] java.lang.UnsatisfiedLinkError: Unable to load library 'Carbon':
[error] dlopen(libCarbon.dylib, 9): image not found
[error] dlopen(libCarbon.dylib, 9): image not found
[error] at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:302)
[error] at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:455)
[error] at com.sun.jna.Library$Handler.<init>(Library.java:192)
[error] at com.sun.jna.Native.loadLibrary(Native.java:646)
[error] at com.sun.jna.Native.loadLibrary(Native.java:630)
[error] at io.methvin.watchservice.jna.CarbonAPI.<clinit>(CarbonAPI.java:20)
[error] at io.methvin.watchservice.jna.CFStringRef.toCFString(CFStringRef.java:23)
[error] at io.methvin.watchservice.MacOSXListeningWatchService.register(MacOSXListeningWatchService.java:128)
[error] at io.methvin.watchservice.WatchablePath.register(WatchablePath.java:50)
[error] at io.methvin.watcher.DirectoryWatcher.register(DirectoryWatcher.java:341)
[error] at io.methvin.watcher.DirectoryWatcher.registerAll(DirectoryWatcher.java:315)
[error] at io.methvin.watcher.DirectoryWatcher.<init>(DirectoryWatcher.java:176)
[error] at io.methvin.watcher.DirectoryWatcher$Builder.build(DirectoryWatcher.java:117)
[error] at play.dev.filewatch.DefaultFileWatchService.watch(DefaultFileWatchService.scala:38)
[error] at play.dev.filewatch.FileWatchService$$anon$1.watch(FileWatchService.scala:87)
[error] at play.runsupport.Reloader.<init>(Reloader.scala:443)
[error] at play.runsupport.Reloader$.reloader$lzycompute$1(Reloader.scala:283)
[error] at play.runsupport.Reloader$.play$runsupport$Reloader$$reloader$1(Reloader.scala:275)
[error] at play.runsupport.Reloader$.startDevMode(Reloader.scala:311)
[error] at play.sbt.run.PlayRun$.devModeServer$lzycompute$1(PlayRun.scala:98)
[error] at play.sbt.run.PlayRun$.devModeServer$1(PlayRun.scala:81)
[error] at play.sbt.run.PlayRun$.$anonfun$playRunTask$3(PlayRun.scala:105)
[error] at play.sbt.run.PlayRun$.$anonfun$playRunTask$3$adapted(PlayRun.scala:67)
[error] at scala.Function1.$anonfun$compose$1(Function1.scala:49)
Reproducible Test Case
The underlying issue is with macOS 11's changes to how JNA can load dylibs:
ok, thanks!
FYI, JNA 5.6.0 has been released.
I released directory-watcher 0.10.0 with the fix.
Still getting this error in directory-watcher 0.10.1 on Apple Silicon + Big Sur + sbt 1.4.9:
[error] java.lang.NoClassDefFoundError: Could not initialize class io.methvin.watchservice.jna.CarbonAPI [error] at io.methvin.watchservice.jna.CFStringRef.toCFString(CFStringRef.java:23) [error] at io.methvin.watchservice.MacOSXListeningWatchService.register(MacOSXListeningWatchService.java:127) [error] at io.methvin.watchservice.WatchablePath.register(WatchablePath.java:50) [error] at io.methvin.watcher.DirectoryWatcher.register(DirectoryWatcher.java:341) [error] at io.methvin.watcher.DirectoryWatcher.registerAll(DirectoryWatcher.java:315) [error] at io.methvin.watcher.DirectoryWatcher.<init>(DirectoryWatcher.java:176) [error] at io.methvin.watcher.DirectoryWatcher$Builder.build(DirectoryWatcher.java:117) [error] at play.dev.filewatch.DefaultFileWatchService.watch(DefaultFileWatchService.scala:41) [error] at play.dev.filewatch.FileWatchService$$anon$1.watch(FileWatchService.scala:90) [error] at play.runsupport.Reloader.<init>(Reloader.scala:443) [error] at play.runsupport.Reloader$.reloader$lzycompute$1(Reloader.scala:283) [error] at play.runsupport.Reloader$.play$runsupport$Reloader$$reloader$1(Reloader.scala:275) [error] at play.runsupport.Reloader$.startDevMode(Reloader.scala:306) [error] at play.sbt.run.PlayRun$.devModeServer$lzycompute$1(PlayRun.scala:98) [error] at play.sbt.run.PlayRun$.devModeServer$1(PlayRun.scala:81) [error] at play.sbt.run.PlayRun$.$anonfun$playRunTask$3(PlayRun.scala:105) [error] at play.sbt.run.PlayRun$.$anonfun$playRunTask$3$adapted(PlayRun.scala:67) [error] at scala.Function1.$anonfun$compose$1(Function1.scala:49)
I am getting this error with sbt 1.5.6 and the dependency
"io.methvin" % "directory-watcher" % "0.15.0"
I have apple M1 chip and MacOS 12
You need to upgrade to sbt 1.6.2
@mkurz thank you for the quick reply. Yes, it started working after upgrading to 1.6.2.