如何在运行时防止Java编译时异常?
在运行时的项目中,我不时会遇到异常,例如如何在运行时防止Java编译时异常?,java,maven,runtime-error,Java,Maven,Runtime Error,在运行时的项目中,我不时会遇到异常,例如NoSuchMethodError或NoClassDefFoundError。项目由Maven生成,没有任何警告。 调查显示,出现这种情况是因为我的项目中有直接依赖关系,需要我直接使用的库的不同版本。因此,依赖关系树可能如下所示: <exclusions> <exclusion> <artifactId></artifactId> <groupId>
NoSuchMethodError
或NoClassDefFoundError
。项目由Maven
生成,没有任何警告。调查显示,出现这种情况是因为我的项目中有直接依赖关系,需要我直接使用的库的不同版本。因此,依赖关系树可能如下所示:
<exclusions>
<exclusion>
<artifactId></artifactId>
<groupId></groupId>
</exclusion>
</exclusions>
- 我的大学项目1.0
- apache http客户端4.2.0
- cxf 2.6
- apache http客户端4.1.0
<exclusions>
<exclusion>
<artifactId></artifactId>
<groupId></groupId>
</exclusion>
</exclusions>
- 我的大学项目1.0
- apache http客户端4.2.0
- apache commons编解码器1.9
- struts 2.3
- apache commons编解码器1.4
- apache http客户端4.2.0
这些方法对我来说似乎都不完整。你用什么方法?如何解决此问题?您可以在依赖项中使用排除标记,如下所示:
<exclusions>
<exclusion>
<artifactId></artifactId>
<groupId></groupId>
</exclusion>
</exclusions>
然后在如何使用依赖排除部分~您可以尝试插件。这可能过于谨慎,但值得一试。它将禁止在pom.xml内声明依赖项的嵌套依赖项~尝试使用我上面提到的链接了解它~是的,如果您知道存在冲突,并且您知道冲突库的正确版本,则依赖项排除是一种解决方案。我的问题更多的是关于如何找出您有冲突,并找出满足所有其他人的冲突库的版本。例如,如果我添加了新的具有深度依赖关系树的第三方库,我如何检测冲突。我如何为两个依赖于公共第三方库的第三方库选择版本?@dan:不幸的是,最后一个问题没有通用的解决方案。@OliverCharlesworth同意,自动解决冲突是不可能的。但似乎检测是可能的。因为在您成功构建项目之后,出现编译时错误是很奇怪的。@dan:嗯,这是一个运行时错误。这可能是由于一个类在编译时在库的版本中可用,但在运行时在类路径上结束的库的版本中不可用。Java中不存在“编译时异常”。