Skip to content

File watching fails on MacOS Big Sur beta #253

@chancerussell

Description

@chancerussell

When starting up file watching via wkf/hawk, an exception is thrown. After a little digging, this looks to be caused by changes to how MacOS loads dylibs in 11.0+.

It looks like the JNA folks are already working on a fix, so once that lands, we can update (or fork) BarbaryWatchService, then update wkf/hawk to use it.

Stack trace:

[Figwheel:SEVERE] java.lang.UnsatisfiedLinkError: Unable to load library 'Carbon': dlopen(libCarbon.dylib, 9): image not found
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class com.barbarysoftware.jna.CarbonAPI
        at com.barbarysoftware.jna.CFStringRef.toCFString(CFStringRef.java:10)
        at com.barbarysoftware.watchservice.MacOSXListeningWatchService.register(MacOSXListeningWatchService.java:30)
        at com.barbarysoftware.watchservice.WatchableFile.register(WatchableFile.java:30)
        at com.barbarysoftware.watchservice.WatchableFile.register(WatchableFile.java:39)
        at hawk.watcher$fn__133.invokeStatic(watcher.clj:102)
        at hawk.watcher$fn__133.invoke(watcher.clj:99)
        at hawk.watcher$fn__38$G__29__47.invoke(watcher.clj:24)
        at hawk.core$watch_BANG_.invokeStatic(core.clj:83)
        at hawk.core$watch_BANG_.doInvoke(core.clj:59)
        at clojure.lang.RestFn.invoke(RestFn.java:410)
        at clojure.lang.AFn.applyToHelper(AFn.java:154)
        at clojure.lang.RestFn.applyTo(RestFn.java:132)
        at clojure.core$apply.invokeStatic(core.clj:657)
        at clojure.core$apply.invoke(core.clj:652)
        at figwheel.main.watching$alter_watches.invokeStatic(watching.clj:17)
        at figwheel.main.watching$alter_watches.invoke(watching.clj:11)
        at clojure.lang.Atom.swap(Atom.java:51)
        at clojure.core$swap_BANG_.invokeStatic(core.clj:2345)
        at clojure.core$swap_BANG_.invoke(core.clj:2337)
        at figwheel.main.watching$add_watch_BANG_.invokeStatic(watching.clj:22)
        at figwheel.main.watching$add_watch_BANG_.invoke(watching.clj:21)
        at figwheel.main.css_reload$start_STAR_.invokeStatic(css_reload.cljc:188)
        at figwheel.main.css_reload$start_STAR_.invoke(css_reload.cljc:187)
        at clojure.lang.Var.invoke(Var.java:381)
        at figwheel.main$watch_css.invokeStatic(main.cljc:1188)
        at figwheel.main$watch_css.invoke(main.cljc:1185)
        at figwheel.main$config_watch_css$fn__7373.invoke(main.cljc:1195)
        at figwheel.main$default_compile.invokeStatic(main.cljc:1848)
        at figwheel.main$default_compile.invoke(main.cljc:1812)
        at figwheel.main$build_main_opt.invokeStatic(main.cljc:526)
        at figwheel.main$build_main_opt.invoke(main.cljc:521)
        at cljs.cli$main.invokeStatic(cli.clj:636)
        at cljs.cli$main.doInvoke(cli.clj:625)
        at clojure.lang.RestFn.applyTo(RestFn.java:139)
        at clojure.core$apply.invokeStatic(core.clj:659)
        at clojure.core$apply.invoke(core.clj:652)
        at cljs.main$_main.invokeStatic(main.clj:61)
        at cljs.main$_main.doInvoke(main.clj:52)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invokeStatic(core.clj:657)
        at clojure.core$apply.invoke(core.clj:652)
        at figwheel.main$_main$fn__7768.invoke(main.cljc:2165)
        at clojure.core$with_redefs_fn.invokeStatic(core.clj:7434)
        at clojure.core$with_redefs_fn.invoke(core.clj:7418)
        at figwheel.main$_main.invokeStatic(main.cljc:2163)
        at figwheel.main$_main.doInvoke(main.cljc:2142)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.lang.Var.applyTo(Var.java:702)
        at clojure.core$apply.invokeStatic(core.clj:657)
        at clojure.main$main_opt.invokeStatic(main.clj:317)
        at clojure.main$main_opt.invoke(main.clj:313)
        at clojure.main$main.invokeStatic(main.clj:424)
        at clojure.main$main.doInvoke(main.clj:387)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.lang.Var.applyTo(Var.java:702)
        at clojure.main.main(main.java:37)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions