IllegalAccessError при вызове ant-скрипта из maven-antrun-plugin - PullRequest
4 голосов
/ 24 августа 2009

Я только что обновил Maven с 2.0.9 до 2.2.1 и получаю следующее исключение при запуске сборки maven:

INFO] [antrun:run {execution: precompile-jsp}]
[INFO] Executing tasks

default:

jspc:
    [mkdir] Created dir: C:\builds\trunk\webapps\vyre_portlets\WEB-INF\jsp_src
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] An Ant BuildException has occured: The following error occurred while executing this line:
C:\unify\trunk\portlets\build-jsps.xml:87: The following error occurred while executing this line:
C:\unify\trunk\portlets\build-jsps.xml:7: java.lang.IllegalAccessError: tried to access method org.apache.tools.ant.launch.Locator.decodeUri(Ljava/lang/String;)Ljava/lang/String; from class org.apache.tools.ant.AntClassLoader

Ant-скрипт build-jsps.xml запускает задачу org.apache.jasper.JspC для предварительной компиляции JSP в веб-приложении, создаваемом maven. Это работало нормально с Maven 2.0.9.

Google дает кучу людей, которые задают похожие вопросы, но не дают ответов. Кто-нибудь сталкивался с этим и знает, как решить эту проблему? Или даже просто почему я получаю IllegalAccessError?

Ответы [ 2 ]

3 голосов
/ 22 сентября 2009

попробуйте явно установить ANT-зависимость для "maven-antrun-plugin".

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
        .... 
    </executions>
    <dependencies>
        <dependency>
               <groupId>org.apache.ant</groupId>
               <artifactId>ant-nodeps</artifactId>
               <version>1.7.0</version>                                   
        </dependency>
    </dependencies>
</plugin>

Обратите внимание, что есть несколько мест, где вы можете найти ANT в общедоступном хранилище Maven:

  1. <groupId>org.apache.ant</groupId>
  2. <groupId>ant</groupId>

(2) старый, поэтому вместо него используйте (1)

0 голосов
/ 24 августа 2009

В Maven 2.2.x были обновлены версии многих плагинов. Если вы запустите сборку с -X, вы увидите, какая версия antrun-plugin была использована. Если это разные версии, возможно, используется другая версия org.apache.tools.ant.launch.Locator. Глядя на историю изменений для Locator, метод decodeUri был представлен в Ant 1.7 и несколько раз подправлялся, хотя ничего, что могло бы вызвать проблему.

Можете ли вы опубликовать минимальную конфигурацию pom и ant, которая показывает ошибку? это поможет диагностировать проблему.

...