компиляция не удалась, несмотря на обязательные записи в pom.xml (commons-lang3) - PullRequest
0 голосов
/ 01 июня 2018

Обзор

Это может быть тривиальный вопрос или он может не подходить для рассмотрения, но любое предложение будет полезным.

Когда кpom.xml куча ошибок появляется при компиляции проекта в java jar без какого-либо изменения кода, что бы то ни было

Шаги

  • Клонировать Gitвыполнить репо для проекта и выполнить 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] ------------------------------------------------------------------------
    
  • Добавить новую необходимую зависимость в pom.xml того же проекта Ссылка MVN

    <dependency>
        <groupId>org.apache.storm</groupId>
        <artifactId>storm-hive</artifactId>
        <version>1.1.1</version>
    </dependency>
    
  • Теперь снова выполните mvn clean compile

    [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
    
    .
    
    .
    
    .
    
    .
    

    Многократное появление сообщения об ошибке, связанного с 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>
    
  • Соответствующая зависимость также присутствует локально

    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
    
  • Этот метод устарел в последующих выпусках, но он очень присутствует в этой версии и работал до сих пор.

Вопрос

  • Почему они не были показаны в первую очередь, поскольку они, кажется, уже присутствуют, если код не был изменен?
  • JSONException связанных с ошибками можно позаботиться, но почему вдруг исчезает какая-то зависимость и как это исправить?

1 Ответ

0 голосов
/ 01 июня 2018

Два наиболее вероятных сценария:

  1. До того, как вы добавили эту зависимость, уже существовала зависимость от другой версии storm-hive.Если вы вернетесь в рабочее состояние (до того, как добавите зависимость) и вызовете цель Maven dependency:list, возможно, вы уже увидите storm-hive в списке.

  2. Существуетдругая зависимость в зависимости: список с общими именами классов с storm-hive.Если на вашем пути к классам есть разные классы с одинаковыми именами, Java просто выбирает один из них, и это может привести к странным ошибкам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...