【问题标题】:sbt run ExceptionInInitializerError at net.contentobjects.jnotify.macosx.JNotifyAdapterMacOSX.<init>(Unknown Source)sbt 在 net.contentobjects.jnotify.macosx.JNotifyAdapterMacOSX.<init> 运行 ExceptionInInitializerError(未知来源)
【发布时间】:2020-07-15 02:09:33
【问题描述】:

我最近开始在一个新地方工作,他们正在使用 scala 并玩这个旧版应用程序。不幸的是,这里没有人熟悉这个错误,我希望一些更有经验的 scala 人可以在这里发光。

在 Mac OS (Catalina) 上,我遇到了这些错误,但是当我将所有内容放入 linux VM 时,我可以让它工作!所以,它是特定于 OS X 的。

Java 8 SBT .13

以下是尝试运行程序时来自 SBT 控制台的几个堆栈跟踪:

[info] Loading global plugins from /Users/me/.sbt/0.13/plugins
[info] Loading project definition from /Users/me/dev/.../projectDirectory/project
[info] Set current project to RedactedProjectName (in build file:/Users/me/dev/.../projectDirectory/)

[warn] Error loading JNotify watch service: null
--- (Running the application, auto-reloading is enabled) ---

java.lang.ExceptionInInitializerError
    at net.contentobjects.jnotify.macosx.JNotifyAdapterMacOSX.<init>(Unknown Source)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at java.lang.Class.newInstance(Class.java:442)
    at net.contentobjects.jnotify.JNotify.<clinit>(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at play.runsupport.JNotifyFileWatchService$JNotifyDelegate.ensureLoaded(FileWatchService.scala:188)
    at play.runsupport.JNotifyFileWatchService$$anonfun$5.apply(FileWatchService.scala:243)
    at play.runsupport.JNotifyFileWatchService$$anonfun$5.apply(FileWatchService.scala:199)
    at scala.util.control.Exception$Catch$$anonfun$withTry$1.apply(Exception.scala:129)
    at scala.util.control.Exception$Catch$$anonfun$withTry$1.apply(Exception.scala:129)
    at scala.util.control.Exception$Catch.apply(Exception.scala:102)
    at scala.util.control.Exception$Catch.withTry(Exception.scala:129)
    at play.runsupport.JNotifyFileWatchService$.apply(FileWatchService.scala:199)
    at play.runsupport.FileWatchService$$anon$1.delegate$lzycompute(FileWatchService.scala:80)
    at play.runsupport.FileWatchService$$anon$1.delegate(FileWatchService.scala:76)
    at play.runsupport.FileWatchService$$anon$1.watch(FileWatchService.scala:89)
    at play.runsupport.Reloader.<init>(Reloader.scala:310)
    at play.runsupport.Reloader$.reloader$lzycompute$1(Reloader.scala:210)
    at play.runsupport.Reloader$.play$runsupport$Reloader$$reloader$1(Reloader.scala:210)
    at play.runsupport.Reloader$.startDevMode(Reloader.scala:234)
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.devModeServer$lzycompute$1(PlayRun.scala:74)
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.play$sbt$run$PlayRun$$anonfun$$anonfun$$anonfun$$devModeServer$1(PlayRun.scala:74)
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.apply(PlayRun.scala:100)
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.apply(PlayRun.scala:53)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
    at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
    at sbt.std.Transform$$anon$4.work(System.scala:63)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
    at sbt.Execute.work(Execute.scala:237)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
    at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
    at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1847)
    at java.lang.Runtime.loadLibrary0(Runtime.java:871)
    at java.lang.System.loadLibrary(System.java:1124)
    at net.contentobjects.jnotify.macosx.JNotify_macosx.<clinit>(Unknown Source)
    at net.contentobjects.jnotify.macosx.JNotifyAdapterMacOSX.<init>(Unknown Source)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at java.lang.Class.newInstance(Class.java:442)
    at net.contentobjects.jnotify.JNotify.<clinit>(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at play.runsupport.JNotifyFileWatchService$JNotifyDelegate.ensureLoaded(FileWatchService.scala:188)
    at play.runsupport.JNotifyFileWatchService$$anonfun$5.apply(FileWatchService.scala:243)
    at play.runsupport.JNotifyFileWatchService$$anonfun$5.apply(FileWatchService.scala:199)
    at scala.util.control.Exception$Catch$$anonfun$withTry$1.apply(Exception.scala:129)
    at scala.util.control.Exception$Catch$$anonfun$withTry$1.apply(Exception.scala:129)
    at scala.util.control.Exception$Catch.apply(Exception.scala:102)
    at scala.util.control.Exception$Catch.withTry(Exception.scala:129)
    at play.runsupport.JNotifyFileWatchService$.apply(FileWatchService.scala:199)
    at play.runsupport.FileWatchService$$anon$1.delegate$lzycompute(FileWatchService.scala:80)
    at play.runsupport.FileWatchService$$anon$1.delegate(FileWatchService.scala:76)
    at play.runsupport.FileWatchService$$anon$1.watch(FileWatchService.scala:89)
    at play.runsupport.Reloader.<init>(Reloader.scala:310)
    at play.runsupport.Reloader$.reloader$lzycompute$1(Reloader.scala:210)
    at play.runsupport.Reloader$.play$runsupport$Reloader$$reloader$1(Reloader.scala:210)
    at play.runsupport.Reloader$.startDevMode(Reloader.scala:234)
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.devModeServer$lzycompute$1(PlayRun.scala:74)
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.play$sbt$run$PlayRun$$anonfun$$anonfun$$anonfun$$devModeServer$1(PlayRun.scala:74)
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.apply(PlayRun.scala:100)
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.apply(PlayRun.scala:53)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
    at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
    at sbt.std.Transform$$anon$4.work(System.scala:63)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
    at sbt.Execute.work(Execute.scala:237)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
    at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
    at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
java.lang.NullPointerException
    at java.util.concurrent.ConcurrentHashMap.putVal(ConcurrentHashMap.java:1011)
    at java.util.concurrent.ConcurrentHashMap.putIfAbsent(ConcurrentHashMap.java:1535)
    at io.netty.util.internal.ConcurrentSet.add(ConcurrentSet.java:48)
    at io.netty.channel.group.DefaultChannelGroup.add(DefaultChannelGroup.java:133)
    at play.core.server.NettyServer.bind(NettyServer.scala:140)
    at play.core.server.NettyServer.play$core$server$NettyServer$$bindChannel(NettyServer.scala:224)
    at play.core.server.NettyServer$$anonfun$1.apply(NettyServer.scala:216)
    at play.core.server.NettyServer$$anonfun$1.apply(NettyServer.scala:216)
    at scala.Option.map(Option.scala:146)
    at play.core.server.NettyServer.<init>(NettyServer.scala:216)
    at play.core.server.NettyServerProvider.createServer(NettyServer.scala:279)
    at play.core.server.NettyServerProvider.createServer(NettyServer.scala:278)
    at play.core.server.DevServerStart$$anonfun$mainDev$1.apply(DevServerStart.scala:235)
    at play.core.server.DevServerStart$$anonfun$mainDev$1.apply(DevServerStart.scala:65)
    at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
    at play.core.server.DevServerStart$.mainDev(DevServerStart.scala:64)
    at play.core.server.DevServerStart$.mainDevHttpMode(DevServerStart.scala:54)
    at play.core.server.DevServerStart.mainDevHttpMode(DevServerStart.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at play.runsupport.Reloader$.startDevMode(Reloader.scala:234)
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.devModeServer$lzycompute$1(PlayRun.scala:74)
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.play$sbt$run$PlayRun$$anonfun$$anonfun$$anonfun$$devModeServer$1(PlayRun.scala:74)
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.apply(PlayRun.scala:100)
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.apply(PlayRun.scala:53)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
[trace] Stack trace suppressed: run last compile:run for the full output.
[error] (compile:run) java.lang.reflect.InvocationTargetException
[error] Total time: 1 s, completed Apr 2, 2020 4:14:45 PM



如果我再次sbt evicted 然后sbt run,项目启动,一切看起来都很好:

git:(master) ✗ sbt run
[info] Loading global plugins from /Users/me/.sbt/0.13/plugins
[info] Loading project definition from /Users/me/dev/.../projectDir/project
[info] Set current project to theProject (in build file:/Users/me/dev/.../projectDir/ocpapi/)
[info] Updating {file:/Users/jonbuck/dev/.../projectDir/}root...
[info] Resolving jline#jline;2.14.3 ...
[info] Done updating.
[warn] There may be incompatibilities among your library dependencies.
[warn] Here are some of the libraries that were evicted:
[warn]  * com.typesafe.akka:akka-slf4j_2.11:2.4.20 -> 2.5.14
[warn]  * com.typesafe.akka:akka-actor_2.11:(2.4.20, 2.5.1, 2.3.13) -> 2.5.14
[warn] Run 'evicted' to see detailed eviction warnings

[warn] Error loading JNotify watch service: null
--- (Running the application, auto-reloading is enabled) ---

[info] p.c.s.NettyServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

(Server started, use Ctrl+D to stop and go back to the console...)



然后当我点击 localhost:9000 我开始看到这个:

[info] p.c.s.NettyServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

(Server started, use Ctrl+D to stop and go back to the console...)

[warn] i.n.c.s.n.NioServerSocketChannel - Failed to create a new channel from an accepted socket.
java.lang.ExceptionInInitializerError: null
    at sun.nio.ch.SocketChannelImpl$DefaultOptionsHolder.defaultOptions(SocketChannelImpl.java:239)
    at sun.nio.ch.SocketChannelImpl$DefaultOptionsHolder.<clinit>(SocketChannelImpl.java:226)
    at sun.nio.ch.SocketChannelImpl.supportedOptions(SocketChannelImpl.java:248)
    at sun.nio.ch.SocketChannelImpl.setOption(SocketChannelImpl.java:166)
    at sun.nio.ch.SocketAdaptor.setBooleanOption(SocketAdaptor.java:284)
    at sun.nio.ch.SocketAdaptor.setTcpNoDelay(SocketAdaptor.java:319)
    at io.netty.channel.socket.DefaultSocketChannelConfig.setTcpNoDelay(DefaultSocketChannelConfig.java:254)
    at io.netty.channel.socket.DefaultSocketChannelConfig.<init>(DefaultSocketChannelConfig.java:54)
    at io.netty.channel.socket.nio.NioSocketChannel$NioSocketChannelConfig.<init>(NioSocketChannel.java:391)
    at io.netty.channel.socket.nio.NioSocketChannel$NioSocketChannelConfig.<init>(NioSocketChannel.java:389)
Caused by: java.lang.NullPointerException: null
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1847)
    at java.lang.Runtime.loadLibrary0(Runtime.java:871)
    at java.lang.System.loadLibrary(System.java:1124)
    at sun.net.ExtendedOptionsImpl.lambda$static$0(ExtendedOptionsImpl.java:48)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.net.ExtendedOptionsImpl.<clinit>(ExtendedOptionsImpl.java:47)
    at sun.nio.ch.SocketChannelImpl$DefaultOptionsHolder.defaultOptions(SocketChannelImpl.java:239)
    at sun.nio.ch.SocketChannelImpl$DefaultOptionsHolder.<clinit>(SocketChannelImpl.java:226)
    at sun.nio.ch.SocketChannelImpl.supportedOptions(SocketChannelImpl.java:248)
    at sun.nio.ch.SocketChannelImpl.setOption(SocketChannelImpl.java:166)
[warn] i.n.c.s.n.NioServerSocketChannel - Failed to create a new channel from an accepted socket.
java.lang.NoClassDefFoundError: Could not initialize class sun.nio.ch.SocketChannelImpl$DefaultOptionsHolder
    at sun.nio.ch.SocketChannelImpl.supportedOptions(SocketChannelImpl.java:248)
    at sun.nio.ch.SocketChannelImpl.setOption(SocketChannelImpl.java:166)
    at sun.nio.ch.SocketAdaptor.setBooleanOption(SocketAdaptor.java:284)
    at sun.nio.ch.SocketAdaptor.setTcpNoDelay(SocketAdaptor.java:319)
    at io.netty.channel.socket.DefaultSocketChannelConfig.setTcpNoDelay(DefaultSocketChannelConfig.java:254)
    at io.netty.channel.socket.DefaultSocketChannelConfig.<init>(DefaultSocketChannelConfig.java:54)
    at io.netty.channel.socket.nio.NioSocketChannel$NioSocketChannelConfig.<init>(NioSocketChannel.java:391)
    at io.netty.channel.socket.nio.NioSocketChannel$NioSocketChannelConfig.<init>(NioSocketChannel.java:389)
    at io.netty.channel.socket.nio.NioSocketChannel.<init>(NioSocketChannel.java:98)
    at io.netty.channel.socket.nio.NioServerSocketChannel.doReadMessages(NioServerSocketChannel.java:145)
[warn] i.n.c.s.n.NioServerSocketChannel - Failed to create a new channel from an accepted socket.
java.lang.NoClassDefFoundError: Could not initialize class sun.nio.ch.SocketChannelImpl$DefaultOptionsHolder
    at sun.nio.ch.SocketChannelImpl.supportedOptions(SocketChannelImpl.java:248)
    at sun.nio.ch.SocketChannelImpl.setOption(SocketChannelImpl.java:166)
    at sun.nio.ch.SocketAdaptor.setBooleanOption(SocketAdaptor.java:284)
    at sun.nio.ch.SocketAdaptor.setTcpNoDelay(SocketAdaptor.java:319)
    at io.netty.channel.socket.DefaultSocketChannelConfig.setTcpNoDelay(DefaultSocketChannelConfig.java:254)
    at io.netty.channel.socket.DefaultSocketChannelConfig.<init>(DefaultSocketChannelConfig.java:54)
    at io.netty.channel.socket.nio.NioSocketChannel$NioSocketChannelConfig.<init>(NioSocketChannel.java:391)
    at io.netty.channel.socket.nio.NioSocketChannel$NioSocketChannelConfig.<init>(NioSocketChannel.java:389)
    at io.netty.channel.socket.nio.NioSocketChannel.<init>(NioSocketChannel.java:98)
    at io.netty.channel.socket.nio.NioServerSocketChannel.doReadMessages(NioServerSocketChannel.java:145)



【问题讨论】:

  • 我已经尝试更改我正在使用的 JVM,甚至擦除我的磁盘并降级回 Mojave,我认为因为本机方法没有签名,所以它们不能执行。我还是迷路了。
  • 这使用的是什么版本的 Play?我有一个类似的,如果不是相同的堆栈跟踪,还不能弄清楚问题是什么。我在玩2.6.20
  • 我现在已经设法通过删除 ~/.ivy2 并重新开始来重新创建您的第二个堆栈跟踪。我很想知道您尝试过哪些 JVM。我一直在使用采用 OpenJDK 1.8.0_242。我遇到了建议尝试 232 的 this post,突然问题对我来说消失了。
  • 使用 play 2.5.18

标签: scala jvm sbt netty macos-catalina


【解决方案1】:

我认为这是我假设您正在运行的 OpenJDK 版本 1.8.0_242 中的一个错误 - 请参阅 OpenJDK 跟踪器中的问题 JDK-8240521

在发布时降级回1.8.0_232 或升级到1.8.0_252 应该可以解决此问题。

您发布的两个堆栈跟踪都显示了使用反射来实例化类的代码路径。

这可以说是 Error when trying to run a Play Scala app with sbt after fresh install on Catalina: "Error loading JNotify watch service: null" 的副本,尽管这个问题更容易找到,因为它包含堆栈跟踪。

【讨论】:

  • 我大约在 3 天前就这样做了。我希望我当时更新了我的问题并为您省去了麻烦!感谢您花时间发布自己的发现!
  • 你是对的,我使用的是 242。我尝试使用 242 的其他实现,如 Azul 242 和亚马逊的 Corretto 242,所有这些仍然存在相同的问题
【解决方案2】:

我最终通过将我的 java 降级回 Azul zulu 8.0.232.fx-zulu 来实现这一点。

不过,我不确定问题的确切原因是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    相关资源
    最近更新 更多