【问题标题】:Maven 2 reports 'java.util.List' cannot be instantiated errorMaven 2 报告“java.util.List”无法实例化错误
【发布时间】:2013-07-21 17:31:03
【问题描述】:

一位用户报告说我维护的一个 maven 插件不再适用于 maven 2(它在 maven 3 下运行得很好)。解析pom失败,报错

Cause: Class 'java.util.List' cannot be instantiated

快速谷歌表明这是 3.0 之前的 maven 模型中的一个错误,它影响了其他插件。

http://code.google.com/p/maven-samaxes-plugin/issues/detail?id=18

我最近通过为 List 参数指定表达式添加了对通过命令行设置值的支持,看来这已经触发了这个错误。

 /**
 * @parameter expression="${targetClasses}" 
 */
  protected List<String>  targetClasses;

我可以通过将字段声明为具体的列表类型来解决这个问题,但是每个人都知道每次你这样做都会死去一个仙女。

除了取消对 maven 2 的支持或使用具体类型之外,是否有更好的解决方案来解决这个问题?

【问题讨论】:

  • annotations 呢?
  • @khmarbaise 感谢您的建议,但是如果我更新为使用注释,插件是否仍与 maven 2 兼容(这不是 maven 3 的功能)吗?如果是这样,是否有理由相信这会解决 maven 2 用户的原始问题?
  • 是的。除了运行的 JVM,它必须至少是 JVM 1.5。 100% 确定您需要使用 maven 2 进行测试。我希望您不是在谈论 Maven 2.0.X 吗?

标签: java maven-2 maven-plugin


【解决方案1】:

这已经很老了,我猜你已经回答了你自己的问题......不过,为了完整起见,这里是:

我正在使用 mvn 2.0.9 并且必须从 List&lt;String&gt; 迁移:

/**
 * @parameter expression="${arguments}" 
 */
protected List<String> arguments;      //with or without generics, still complained!

String[]:

/**
 * @parameter expression="${arguments}" 
 */
protected String[] arguments;

那么pom配置如下:

<configuration>
    ...
    <arguments>
        <argument>arg1</argument>
        <argument>arg2</argument>
    </arguments>
</configuration>

【讨论】:

  • 你在哪里改的?
  • @FernandoGabrieli 我没有代码可以提交了。但是,我必须在代表我的 Maven 插件配置的类中更改它 - 即上面代表 arguments 的类。我不得不将它从 List&lt;String&gt; 还原为 String[]
  • 谢谢 :) 也可以使用它的 prev 版本
猜你喜欢
  • 2017-03-01
  • 2015-09-11
  • 1970-01-01
  • 2014-07-27
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多