【问题标题】:IllegalAccessError when calling ant script from maven-antrun-plugin从 maven-antrun-plugin 调用 ant 脚本时出现 IllegalAccessError
【发布时间】:2010-11-22 05:52:14
【问题描述】:

我刚刚将 Maven 从 2.0.9 更新到 2.2.1,运行 maven 构建时出现以下异常:

INFO] [antrun:run {execution: precompile-jsp}] [INFO] 执行任务 默认: jspc: [mkdir] 创建的目录:C:\builds\trunk\webapps\vyre_portlets\WEB-INF\jsp_src [信息] --------------------------------------------- ------------------------- [错误] 构建错误 [信息] --------------------------------------------- ------------------------- [INFO] 发生 Ant BuildException:执行此行时发生以下错误: C:\unify\trunk\portlets\build-jsps.xml:87:执行此行时出现以下错误: C:\unify\trunk\portlets\build-jsps.xml:7: java.lang.IllegalAccessError: 试图访问方法 org.apache.tools.ant.launch.Locator.decodeUri(Ljava/lang/String;)Ljava/语言/字符串;来自 org.apache.tools.ant.AntClassLoader 类

build-jsps.xml ant 脚本运行 org.apache.jasper.JspC 任务以在 maven 正在构建的 web 应用程序中预编译 JSP。这在 Maven 2.0.9 中运行良好。

Google 提供了很多人问类似的问题,但没有答案。有没有人遇到过这个并且知道如何解决这个问题?甚至只是为什么我会收到 IllegalAccessError?

【问题讨论】:

    标签: java jsp maven-2 ant build-process


    【解决方案1】:

    尝试为“maven-antrun-plugin”显式设置 ANT 依赖项。

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

    请注意,在 Maven 的公共存储库中有多个位置可以找到 ANT:

    1. &lt;groupId&gt;org.apache.ant&lt;/groupId&gt;
    2. &lt;groupId&gt;ant&lt;/groupId&gt;

    (2) 是旧的,所以使用 (1) 代替

    【讨论】:

    • 尤里卡!我发现了为什么这对我不起作用。失败的 ant 调用位于也执行 ant 调用的项目的子项目中。看来maven每次执行只为插件设置一次依赖关系,所以你必须在构建的第一次使用中这样做。
    • 我是否必须为我拥有的每个项目更改每个 POM?
    • @UmReeta:如果你有多模块 POM 结构,那么我相信你只能在“父”POM 中做
    【解决方案2】:

    在 Maven 2.2.x 中,许多插件的版本已经更新,如果你使用 -X 运行构建,你会看到使用了哪个版本的 antrun-plugin。如果这些是不同的版本,则可能使用的是不同版本的 org.apache.tools.ant.launch.Locator。查看 Locator 的更改历史记录,在 Ant 1.7 中引入了 decodeUri 方法,并且已经进行了几次调整,尽管没有什么会导致问题。

    您能否发布一个显示错误的最小 pom 和 ant 配置?这将有助于诊断问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多