-
Notifications
You must be signed in to change notification settings - Fork 261
Exception when using dnsjava with exec-maven-plugin #396
Description
When running an executable from command line (with mvn compile exec:java) that uses dnsjava I get NoClassDefFoundError during shutdown (and shutdown hangs for 10 seconds):
java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: org/xbill/DNS/NioTcpClient$ChannelKey
at org.xbill.DNS.NioTcpClient.closeTcp (NioTcpClient.java:70)
at org.xbill.DNS.NioClient.runTasks (NioClient.java:174)
at org.xbill.DNS.NioClient.close (NioClient.java:94)
at org.xbill.DNS.NioClient.lambda$selector$0 (NioClient.java:64)
at java.lang.Thread.run (Thread.java:750)
Caused by: java.lang.NoClassDefFoundError: org/xbill/DNS/NioTcpClient$ChannelKey
at org.xbill.DNS.NioTcpClient.closeTcp (NioTcpClient.java:70)
at org.xbill.DNS.NioClient.runTasks (NioClient.java:174)
at org.xbill.DNS.NioClient.close (NioClient.java:94)
at org.xbill.DNS.NioClient.lambda$selector$0 (NioClient.java:64)
at java.lang.Thread.run (Thread.java:750)
Caused by: java.lang.ClassNotFoundException: org.xbill.DNS.NioTcpClient$ChannelKey
at org.codehaus.mojo.exec.URLClassLoaderBuilder$ExecJavaClassLoader.loadClass (URLClassLoaderBuilder.java:211)
at java.lang.ClassLoader.loadClass (ClassLoader.java:351)
at org.xbill.DNS.NioTcpClient.closeTcp (NioTcpClient.java:70)
at org.xbill.DNS.NioClient.runTasks (NioClient.java:174)
at org.xbill.DNS.NioClient.close (NioClient.java:94)
at org.xbill.DNS.NioClient.lambda$selector$0 (NioClient.java:64)
at java.lang.Thread.run (Thread.java:750)Minimal example project: https://github.com/tzaeschke/exec-maven-plugin-issue
Workaround
The problem can be avoided by manually calling NioClient.close(); before exiting.
Note
I suspect this is a bug in exec-maven-plugin, see #327, not in dnsjava. However, I wanted to report it here because this issue description may be useful to other dnsjava users. We are using many libraries in our application(s), but dnsjava is the only one that triggers the problem.
Also, the issue in the plugin is open since 2022, so it may not be fixed soon. Maybe there is a way for dnsjava to avoid the problem?
Please feel free to close this issue if it seems inappropriate to report it here.