Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: com/sun/jna/platform/win32/VersionHelpers
主要还是NoClassDefFoundError这个错误,NoClassDefFoundError错误的发生,是因为Java虚拟机在编译时能找到合适的类,而在运行时不能找到合适的类导致的错误。与ClassNotFoundException的不同在于,ClassNotFoundException发生在编译时。很多Java开发者很容易在这里把这两个错误搞混。
正常情况出现这种问题都是版本不一致的问题,毕竟依赖包直接添加会使用默认的依赖版本
在pom.xml文件中找到这两个依赖的版本
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>${jna.version}</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna-platform</artifactId>
<version>${jna.version}</version>
</dependency>
看到版本是
<jna.version>5.11.0</jna.version>
但是我们本地maven仓库中使用的确实4.5.2版本,版本不一致,缺少com/sun/jna/platform/win32/VersionHelpers这个类则报的错
这时直接指定版本到pom.xml文件再运行就没问题了
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.11.0</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna-platform</artifactId>
<version>5.11.0</version>
</dependency>