防止java.lang.NoClassDefFoundError的测试

防止java.lang.NoClassDefFoundError的测试,java,scala,testing,jvm,classloader,Java,Scala,Testing,Jvm,Classloader,我刚刚修复了在服务器启动时Scala代码中由不兼容库引起的java.lang.NoClassDefFoundError。有没有一种方法可以编写一个测试来排除此类错误,例如强制加载类路径中的所有类?单元测试无法解决这个问题,因为单元测试可能会针对不同的类路径运行。您所能做的最好的事情就是在任何版本冲突的情况下使构建失败。任何构建工具都可能出现这种情况。不兼容的库如何导致NoClassDefFoundError?我可以理解这是否是一个MethodNotFoundError,因为不同的类版本可以在类路

我刚刚修复了在服务器启动时Scala代码中由不兼容库引起的
java.lang.NoClassDefFoundError
。有没有一种方法可以编写一个测试来排除此类错误,例如强制加载类路径中的所有类?

单元测试无法解决这个问题,因为单元测试可能会针对不同的类路径运行。您所能做的最好的事情就是在任何版本冲突的情况下使构建失败。任何构建工具都可能出现这种情况。

不兼容的库如何导致
NoClassDefFoundError
?我可以理解这是否是一个
MethodNotFoundError
,因为不同的类版本可以在类路径上相互覆盖。我认为导致该错误的类在库的更高版本中被删除,但另一个库中的旧代码依赖于它。这是有意义的。如果您可以找到旧的库,您可以使用构建脚本中的shade插件重新定位它。这样,您可以使用同一库的两个版本。