mill
mill copied to clipboard
./Mill not working with m1 Mac (Failed to connect to server error)
I am trying to work with a build written in mill but whenever I run any mill command it fails. And there is always an Exception in thread "main" java.lang.Exception: Failed to connect to server error. Here is the output of my version.
Mill Build Tool version 0.11.7 Java version: 21.0.2, vendor: Homebrew, runtime: /opt/homebrew/Cellar/openjdk/21.0.2/libexec/openjdk.jdk/Contents/Home Default locale: en_CA, platform encoding: UTF-8 OS name: "Mac OS X", version: 14.2.1, arch: aarch64
Error code:
./mill
Exception in thread "main" java.lang.UnsatisfiedLinkError: /Users/gabriel/Library/Caches/JNA/temp/jna14575276343731702839.tmp: dlopen(/Users/gabriel/Library/Caches/JNA/temp/jna14575276343731702839.tmp, 0x0001): tried: '/Users/gabriel/Library/Caches/JNA/temp/jna14575276343731702839.tmp' (fat file, but missing compatible architecture (have 'i386,x86_64', need 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/gabriel/Library/Caches/JNA/temp/jna14575276343731702839.tmp' (no such file), '/Users/gabriel/Library/Caches/JNA/temp/jna14575276343731702839.tmp' (fat file, but missing compatible architecture (have 'i386,x86_64', need 'arm64'))
at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:388)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:232)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:174)
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2394)
at java.base/java.lang.Runtime.load0(Runtime.java:755)
at java.base/java.lang.System.load(System.java:1957)
at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:1024)
at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:999)
at com.sun.jna.Native.<clinit>(Native.java:191)
at org.scalasbt.ipcsocket.UnixDomainSocketLibrary.<clinit>(UnixDomainSocketLibrary.java:123)
at org.scalasbt.ipcsocket.UnixDomainServerSocket.<init>(UnixDomainServerSocket.java:103)
at org.scalasbt.ipcsocket.UnixDomainServerSocket.<init>(UnixDomainServerSocket.java:93)
at mill.main.Server.$anonfun$run$2(MillServerMain.scala:91)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
at mill.main.Server$.lockBlock(MillServerMain.scala:203)
at mill.main.Server.$anonfun$run$1(MillServerMain.scala:84)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
at mill.main.Server$.tryLockBlock(MillServerMain.scala:210)
at mill.main.Server.run(MillServerMain.scala:81)
at mill.main.MillServerMain$.main(MillServerMain.scala:45)
at mill.main.MillServerMain.main(MillServerMain.scala)
Exception in thread "main" java.lang.Exception: Failed to connect to server
at mill.main.client.MillClientMain.run(MillClientMain.java:200)
at mill.main.client.MillClientMain.main0(MillClientMain.java:129)
at mill.main.client.MillClientMain.main(MillClientMain.java:82)
Thanks for the report. I think we have other users working on m1 Macs, so it might be related to the Java version, which is 21. Maybe, other Mac users could verify and reproduce, that this is the issue?
@GabeNicholson I'm on M2, but would expect similar behaviour?
simon@Simons-Mac-mini indigo2 % mill -v
Mill Build Tool version 0.11.7
Java version: 21.0.2, vendor: Homebrew, runtime: /opt/homebrew/Cellar/openjdk/21.0.2/libexec/openjdk.jdk/Contents/Home
Default locale: en_GB, platform encoding: UTF-8
OS name: "Mac OS X", version: 14.2.1, arch: aarch64
Any chance there is shell configuration tripping you up?
I have M1 Macbook, dont have any issue when i run mill commands
╰─$ ./mill --version
Mill Build Tool version 0.11.7
Java version: 21, vendor: GraalVM Community, runtime: /Users/UserName/.sdkman/candidates/java/21-graalce
Default locale: en_DE, platform encoding: UTF-8
OS name: "Mac OS X", version: 14.1.1, arch: aarch64
Thank you all for your input! Looks like you all already use Java 21 without issues (except the OP). I think there must be some other issue.
I'm closing this, as I don't see any action to be taken. @GabeNicholson if you still experiencing this issue, please provide more details. How do you have installed mill? Does it work with the --no-server option? Do other Java apps work for you?
I have the same issue too, I am currently using m1 mac, and i tried jdk17 and jdk21, but both not work for me.
~/IdeaProject/example-3 5s 09:18:51
❯ export JAVA_HOME=`/usr/libexec/java_home -v 17`
~/IdeaProject/example-3 09:19:03
❯ ./mill -v
Exception in thread "main" java.lang.UnsatisfiedLinkError: /Users/roiocam/Library/Caches/JNA/temp/jna12902990016562179596.tmp: dlopen(/Users/roiocam/Library/Caches/JNA/temp/jna12902990016562179596.tmp, 0x0001): tried: '/Users/roiocam/Library/Caches/JNA/temp/jna12902990016562179596.tmp' (fat file, but missing compatible architecture (have 'i386,x86_64', need 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/roiocam/Library/Caches/JNA/temp/jna12902990016562179596.tmp' (no such file), '/Users/roiocam/Library/Caches/JNA/temp/jna12902990016562179596.tmp' (fat file, but missing compatible architecture (have 'i386,x86_64', need 'arm64'))
at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:388)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:232)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:174)
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2394)
--no-server option is still unable to fix it.
❯ ./mill --no-server foo.compile
Compiling /Users/roiocam/IdeaProject/example-3/build.sc
scala.reflect.internal.FatalError:
bad constant pool index: 0 at pos: 48461
while compiling: <no file>
during phase: globalPhase=<no phase>, enteringPhase=<some phase>
library version: version 2.13.2
compiler version: version 2.13.2
reconstructed args: -nowarn -Yresolve-term-conflict:object
last tree to typer: EmptyTree
tree position: <unknown>
tree tpe: <notype>
symbol: null
call site: <none> in <none>
== Source file context for tree position ==
scala.reflect.internal.Reporting.abort(Reporting.scala:69)
scala.reflect.internal.Reporting.abort$(Reporting.scala:65)
scala.reflect.internal.SymbolTable.abort(SymbolTable.scala:28)
scala.tools.nsc.symtab.classfile.ClassfileParser$ConstantPool.errorBadIndex(ClassfileParser.scala:394)
scala.tools.nsc.symtab.classfile.ClassfileParser$ConstantPool.getExternalName(ClassfileParser.scala:249)
scala.tools.nsc.symtab.classfile.ClassfileParser.readParamNames$1(ClassfileParser.scala:841)
scala.tools.nsc.symtab.classfile.ClassfileParser.parseAttribute$1(ClassfileParser.scala:847)
scala.tools.nsc.symtab.classfile.ClassfileParser.$anonfun$parseAttributes$6(ClassfileParser.scala:917)
scala.tools.nsc.symtab.classfile.ClassfileParser.parseAttributes(ClassfileParser.scala:917)
scala.tools.nsc.symtab.classfile.ClassfileParser.parseMethod(ClassfileParser.scala:621)
scala.tools.nsc.symtab.classfile.ClassfileParser.parseClass(ClassfileParser.scala:534)
scala.tools.nsc.symtab.classfile.ClassfileParser.$anonfun$parse$2(ClassfileParser.scala:161)
scala.tools.nsc.symtab.classfile.ClassfileParser.$anonfun$parse$1(ClassfileParser.scala:147)
scala.tools.nsc.symtab.classfile.ClassfileParser.parse(ClassfileParser.scala:130)
scala.tools.nsc.symtab.SymbolLoaders$ClassfileLoader.doComplete(SymbolLoaders.scala:331)
scala.tools.nsc.symtab.SymbolLoaders$SymbolLoader.$anonfun$complete$2(SymbolLoaders.scala:238)
scala.tools.nsc.symtab.SymbolLoaders$SymbolLoader.complete(SymbolLoaders.scala:236)
scala.reflect.internal.Symbols$Symbol.completeInfo(Symbols.scala:1541)
scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1513)
scala.reflect.internal.Definitions.scala$reflect$internal$Definitions$$enterNewMethod(Definitions.scala:48)
scala.reflect.internal.Definitions$DefinitionsClass.String_$plus$lzycompute(Definitions.scala:1221)
scala.reflect.internal.Definitions$DefinitionsClass.String_$plus(Definitions.scala:1221)
scala.reflect.internal.Definitions$DefinitionsClass.syntheticCoreMethods$lzycompute(Definitions.scala:1518)
scala.reflect.internal.Definitions$DefinitionsClass.syntheticCoreMethods(Definitions.scala:1500)
scala.reflect.internal.Definitions$DefinitionsClass.symbolsNotPresentInBytecode$lzycompute(Definitions.scala:1531)
scala.reflect.internal.Definitions$DefinitionsClass.symbolsNotPresentInBytecode(Definitions.scala:1531)
scala.reflect.internal.Definitions$DefinitionsClass.init(Definitions.scala:1587)
scala.tools.nsc.Global$Run.<init>(Global.scala:1204)
ammonite.interp.Compiler$$anon$1.<init>(Compiler.scala:274)
ammonite.interp.Compiler$.apply(Compiler.scala:142)
ammonite.interp.CompilerLifecycleManager.init(CompilerLifecycleManager.scala:89)
ammonite.interp.CompilerLifecycleManager.preprocess(CompilerLifecycleManager.scala:57)
ammonite.interp.Interpreter.compileRunBlock$1(Interpreter.scala:511)
ammonite.interp.Interpreter.$anonfun$processAllScriptBlocks$15(Interpreter.scala:572)
ammonite.util.Res$Success.flatMap(Res.scala:62)
ammonite.interp.Interpreter.$anonfun$processAllScriptBlocks$14(Interpreter.scala:569)
ammonite.util.Res$Success.flatMap(Res.scala:62)
ammonite.interp.Interpreter.$anonfun$processAllScriptBlocks$12(Interpreter.scala:566)
scala.Option.getOrElse(Option.scala:201)
ammonite.interp.Interpreter.loop$1(Interpreter.scala:566)
ammonite.interp.Interpreter.processAllScriptBlocks(Interpreter.scala:604)
ammonite.interp.Interpreter.$anonfun$processModule$6(Interpreter.scala:399)
ammonite.util.Catching.flatMap(Res.scala:115)
ammonite.interp.Interpreter.$anonfun$processModule$5(Interpreter.scala:390)
ammonite.util.Res$Success.flatMap(Res.scala:62)
ammonite.interp.Interpreter.processModule(Interpreter.scala:380)
mill.main.RunScript$.$anonfun$evaluateRootModule$1(RunScript.scala:93)
ammonite.util.Res$Success.flatMap(Res.scala:62)
mill.main.RunScript$.evaluateRootModule(RunScript.scala:86)
mill.main.RunScript$.runScript(RunScript.scala:48)
mill.main.MainRunner.$anonfun$runScript$1(MainRunner.scala:115)
mill.main.MainRunner.watchLoop2(MainRunner.scala:64)
mill.main.MainRunner.runScript(MainRunner.scala:90)
mill.MillMain$.main0(MillMain.scala:269)
mill.MillMain$.main(MillMain.scala:25)
mill.MillMain.main(MillMain.scala)
I guess because I am using a very old version... the latest 0.11.7 works on my local.
In case you need to use an older version of Mill, you should always be able to fall back to --no-server or --interactive options, to switch Mill into a no-server mode.