Java 在pom.xml(commons-lang3)中省略必需的条目时编译失败
概述 这可能是一个无关紧要的问题,也可能没有资格出席,但任何建议都会有所帮助 当一个依赖项被添加到Java 在pom.xml(commons-lang3)中省略必需的条目时编译失败,java,maven,dependencies,Java,Maven,Dependencies,概述 这可能是一个无关紧要的问题,也可能没有资格出席,但任何建议都会有所帮助 当一个依赖项被添加到pom.xml中时,将一个项目编译成JavaJAR时会出现一堆错误,而代码没有任何变化 步骤 克隆项目的git repo并执行mvn clean compile [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] -----------
pom.xml
中时,将一个项目编译成JavaJAR时会出现一堆错误,而代码没有任何变化
步骤
- 克隆项目的git repo并执行
mvn clean compile
[INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4.743 s [INFO] Finished at: 2018-05-31T22:21:04+00:00 [INFO] Final Memory: 25M/389M [INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project saavn-storm-lib: Compilation failure: Compilation failure: [ERROR] /home/user/backend/storm/storm_lib/src/main/java/com/storm/bolts/Helper.java:[167,57] unreported exception org.json.JSONException; must be caught or declared to be thrown . . . .
- 向同一项目的pom.xml添加新的必需依赖项
多次出现与JSONException相关的错误消息,后跟
[ERROR] /home/user/backend/storm/storm_lib/src/main/java/com/storm/bolts/Helper.java:[132,58] cannot find symbol [ERROR] symbol: method unescapeJson(java.lang.String) [ERROR] location: class org.apache.commons.lang3.StringEscapeUtils
包含pom.xml
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.3.2</version> </dependency>
- 此方法在后续版本中已被弃用,但它在本版本中非常常见,并且到目前为止一直有效
- 既然没有修改代码,为什么这些代码一开始就没有显示出来,因为它们似乎已经存在了
相关的错误可以处理,但是为什么突然缺少一些依赖项,以及如何纠正JSONException
storm hive
的依赖项。如果返回到工作状态(在添加依赖项之前)并调用Maven目标依赖项:list
,您可能已经在列表中看到了一个风暴蜂巢
storm hive
共享限定类名。如果在类路径上有同名的不同类,Java只会选择其中一个,这可能会导致奇怪的错误有了上面的指针,我又找了一点,却无意中发现了。这有助于解除封锁。但问题仍然是如何有效地识别导致问题的依赖关系?我在闲逛时使用了
dependency:analysis
dependency:tree
。为什么需要排除?“依赖关系导致问题”是什么意思?我检查了与storm hive
冲突的任何内容,但没有找到任何内容。那么,是否有可能由于这个特定条目而拉取的其他一些包可能会造成我所面临的问题呢?这就是我所说的导致问题的依赖关系,但我的意思是包。与前面的评论中建议的排除不同,只是将storm hive
依赖关系作为顺序中的最后一个,同时在pom.xml
中声明解决了问题。可能依赖关系管理是更好的解决方案
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
ls -l ~/.m2/repository/org/apache/commons/commons-lang3/3.3.2/
commons-lang3-3.3.2.jar
commons-lang3-3.3.2.jar.sha1
commons-lang3-3.3.2.pom
commons-lang3-3.3.2.pom.sha1
_remote.repositories