记录maven java.lang.String cannot be cast to XX error
2013-09-10 21:47 破狼 阅读(4056) 评论(0) 编辑 收藏 举报在项目开发中自定义了一个maven plugin,在本地能够很好的工作,但是在ci server上却无法正常工作报错为:
----------------------------------------------------- at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java: 225 ) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java: 153 ) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java: 145 ) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java: 84 ) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java: 59 ) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java: 183 ) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java: 161 ) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java: 319 ) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java: 156 ) at org.jvnet.hudson.maven3.launcher.Maven3Launcher.main(Maven3Launcher.java: 79 ) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 57 ) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 43 ) at java.lang.reflect.Method.invoke(Method.java: 601 ) at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java: 329 ) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java: 239 ) at org.jvnet.hudson.maven3.agent.Maven3Main.launch(Maven3Main.java: 146 ) at hudson.maven.Maven3Builder.call(Maven3Builder.java: 127 ) at hudson.maven.Maven3Builder.call(Maven3Builder.java: 74 ) at hudson.remoting.UserRequest.perform(UserRequest.java: 118 ) at hudson.remoting.UserRequest.perform(UserRequest.java: 48 ) at hudson.remoting.Request$ 2 .run(Request.java: 326 ) at hudson.remoting.InterceptingExecutorService$ 1 .call(InterceptingExecutorService.java: 72 ) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java: 334 ) at java.util.concurrent.FutureTask.run(FutureTask.java: 166 ) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java: 1110 ) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java: 603 ) at java.lang.Thread.run(Thread.java: 722 ) Caused by: org.apache.maven.plugin.PluginExecutionException: A type incompatibility occured while executing [group id]:[artifact id]:[version]:start: java.lang.String cannot be cast to java.io.File ----------------------------------------------------- |
在花费了我大半的时间,将本地环境的maven,jdk等设为和ci一致后最后定位到maven的版本问题,其终究原因是因为maven在3.0.3才支持配置参数为泛型集合(List<T>,Set<T>...),在3.0.2及一下本班不支持此写法。
修改次error的方法有两种:
- 将ci Server的maven更新到3.0.3以上。(但是在我们的ci server更新有些困难,还有本人认为如果写一个plugin只能工作的固定version,这和一个废物差不多,所以选择了第二种方法)。
- 将泛型集合List<T>改为Array T[]。(项目中某大神写的List<File>我轻易的改为File[].在执行前改为Arrays.asList(XXX));
一切搞定。在此记录希望对于遇见同类问题的人有所帮助。
作者:破 狼
出处:http://www.cnblogs.com/whitewolf/
本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。该文章也同时发布在我的独立博客中-个人独立博客、博客园--破狼和51CTO--破狼。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2010-09-10 c# OleDb操作Access时间类型:操作符丢失,或者提示错误“标准表达式中数据类型不匹配