在Jenkins中编译java代码获取错误:不兼容的类型

时间:2018-01-04 10:52:50

标签: java jenkins javac devops auto-build

我认为Jenkins编译和构建java项目。但我得到了以下错误

[javac] C:\Users\Administrator\.jenkins\workspace\AMRM\AMRM-rad-workspace\AMRM\src\com\bidv\amrm\struts2\jdbc\DeclareAppImpl.java:232: error: incompatible types
    [javac]                   return DB.getConnection().queryForObject(sql, new Object[]{id}, new DTOMapper());
    [javac]                                                           ^
    [javac]   required: ListAppDTO
    [javac]   found:    Object

我发现修复解决方案是在java代码中关联函数之前添加以下行:@SuppressWarnings(“unchecked”)

但是,还有其他解决方案吗?比如詹金斯的配置?我不想更改我的代码,因为我的项目仍在Eclipse中编译成功(但在Jenkins中错误)

1 个答案:

答案 0 :(得分:0)

我找到了原因,这是因为我的jenkins仍然使用不同的java版本。

所以我将正确的版本(1.6)传递给构建语句javac,然后成功(java.home = C:\ Program Files \ Java \ jdk1.6.0_23)

<javac fork="yes" executable="${java.home}\bin\javac" includeantruntime="false" encoding="utf-8" srcdir="${workspace}/${project.name}/src" destdir="${workspace}/${project.name}/WebContent/WEB-INF/classes" classpath="${was_cp}">
        </javac>

但是,我又收到了一个错误:

Caused by: java.io.IOException: Cannot run program "C:\java1.6\bin\javac": CreateProcess error=206, The filename or extension is too long.