记录maven java.lang.String cannot be cast to XX error

简介:

在项目开发中自定义了一个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的方法有两种:

  1. 将ci Server的maven更新到3.0.3以上。(但是在我们的ci server更新有些困难,还有本人认为如果写一个plugin只能工作的固定version,这和一个废物差不多,所以选择了第二种方法)。
  2. 将泛型集合List<T>改为Array T[]。(项目中某大神写的List<File>我轻易的改为File[].在执行前改为Arrays.asList(XXX));

     一切搞定。在此记录希望对于遇见同类问题的人有所帮助。



本文转自破狼博客园博客,原文链接:http://www.cnblogs.com/whitewolf/p/3313515.html,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
网络协议 C++
解决MASM32代码汇编出错: error A2181: initializer must be a string or single item
解决MASM32代码汇编出错: error A2181: initializer must be a string or single item
|
2月前
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
61 1
从零开始学 Maven:简化 Java 项目的构建与管理
|
2月前
|
JSON Java 关系型数据库
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
在Java中,使用mybatis-plus更新实体类对象到mysql,其中一个字段对应数据库中json数据类型,更新时报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
118 4
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
|
2月前
|
Java 测试技术 Maven
Maven clean 提示文件 java.io.IOException
在使用Maven进行项目打包时,遇到了`Failed to delete`错误,尝试手动删除目标文件也失败,提示`java.io.IOException`。经过分析,发现问题是由于`sys-info.log`文件被其他进程占用。解决方法是关闭IDEA和相关Java进程,清理隐藏的Java进程后重新尝试Maven clean操作。最终问题得以解决。总结:遇到此类问题时,可以通过任务管理器清理相关进程或重启电脑来解决。
|
2月前
|
Java 持续交付 项目管理
使用Maven进行项目管理:提高Java Web开发的效率
Maven 是一款强大的项目管理和构建自动化工具,广泛应用于Java社区。它通过依赖管理、构建生命周期管理、插件机制和多模块项目支持等功能,简化了项目的构建过程,提高了开发效率。本文将介绍Maven的核心功能及其在Java Web开发中的应用。
73 0
|
4月前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
|
5月前
|
Java 开发工具
开发工具系类 之 Cannot determine path to ‘tools.jar‘ library for 17 (D:/Program Files/Java/jdk-17.0.9)
这篇文章讲述了作者在升级JDK至17版本后遇到IDEA无法识别`tools.jar`的问题,并提供了两种解决方法:升级IDEA版本或降低JDK版本,并提供了相关版本的IDEA兼容性信息。
开发工具系类 之 Cannot determine path to ‘tools.jar‘ library for 17 (D:/Program Files/Java/jdk-17.0.9)
|
5月前
|
开发工具 数据安全/隐私保护
【Azure Developer】使用MSAL4J 与 ADAL4J 的SDK时候,遇见了类型冲突问题 "java.util.Collections$SingletonList cannot be cast to java.lang.String"
【Azure Developer】使用MSAL4J 与 ADAL4J 的SDK时候,遇见了类型冲突问题 "java.util.Collections$SingletonList cannot be cast to java.lang.String"
115 0
|
2月前
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
179 8
|
2月前
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
164 3

推荐镜像

更多