java - Gradle 提示它无法将 long 转换为 int,即使该方法需要 long 作为参数

标签 java gradle build.gradle gradle-eclipse

当运行“gradle build”时,我们的一个项目出现以下错误,几个类出现以下编译错误:

cannot be applied to given types;
                this._logFilter.setFirstResult(firstResult);
                               ^
  required: int
  found: long
  reason: actual argument long cannot be converted to int by method invocation conversion

尽管如此,setFirstResult 方法将一个long 作为参数。 这是代码:

public void setFirstResult(long firstResult) {
    this._firstResult = firstResult;
}

我已经尝试过 --refresh-dependencies 并清除缓存等。这些都不适合我。另外这个项目是maven项目,我转过来用gradle代替。

编辑:

我根据评论的要求在这里添加额外的上下文:

这是this._logFilter的源代码

public class GlobalMessageLogFilter {
    private long _firstResult = 0L;

    private long _maxResults = 100L;

    private Application _application;

    private SeverityLevelEnum _severityLevel;

    private EnvironmentEnum _environment;

    private String _userName;

    private Category _category;

    public EnvironmentEnum getEnvironment() {
        return this._environment;
    }

    public void setEnvironment(EnvironmentEnum environment) {
        this._environment = environment;
    }

    public long getFirstResult() {
        return this._firstResult;
    }

    public void setFirstResult(long firstResult) {
        this._firstResult = firstResult;
    }

    public long getMaxResults() {
        return this._maxResults;
    }

    public void setMaxResults(long maxResults) {
        this._maxResults = maxResults;
    }

    public Application getApplication() {
        return this._application;
    }

    public void setApplication(Application application) {
        this._application = application;
    }

    public SeverityLevelEnum getSeverityLevel() {
        return this._severityLevel;
    }

    public void setSeverityLevel(SeverityLevelEnum severityLevel) {
        this._severityLevel = severityLevel;
    }

    public String getUserName() {
        return this._userName;
    }

    public void setUserName(String userName) {
        this._userName = userName;
    }

    public Category getCategory() {
        return this._category;
    }

    public void setCategory(Category category) {
        this._category = category;
    }
}

这是完整的堆栈跟踪

λ gradle build
:compileJava
C:\Java Source\wicket\administration\GlobalMessageLogProvider.java:36: error: method setFirstResult in class GlobalMessageLogFilter cannot be applied to given types;
                this._logFilter.setFirstResult(firstResult);
                               ^
  required: int
  found: long
  reason: actual argument long cannot be converted to int by method invocation conversion
C:\Java Source\wicket\administration\GlobalMessageLogProvider.java:37: error: method setMaxResults in class GlobalMessageLogFilter cannot be applied to given types;
                this._logFilter.setMaxResults(maxResults);
                               ^
  required: int
  found: long
  reason: actual argument long cannot be converted to int by method invocation conversion
C:\Java Source\wicket\administration\users\UserSecurityProvider.java:35: error: method setFirst in class UserSearchFilter cannot be applied to given types;
                this._filter.setFirst(first);
                            ^
  required: int
  found: long
  reason: actual argument long cannot be converted to int by method invocation conversion
C:\Java Source\wicket\administration\users\UserSecurityProvider.java:36: error: method setCount in class UserSearchFilter cannot be applied to given types;
                this._filter.setCount(count);
                            ^
  required: int
  found: long
  reason: actual argument long cannot be converted to int by method invocation conversion

编辑: 添加了GlobalMessageLogProvider

的源码
public class GlobalMessageLogProvider extends SortableDataProvider<GlobalMessageLog, String>
{
    @SpringBean
    private GlobalMessageLogRepository _globalMessageLogRepository;
    private GlobalMessageLogFilter _logFilter;
    private boolean _searchAllowed = false;


    public GlobalMessageLogProvider(GlobalMessageLogFilter globalMessageLogFilter)
    {
        Injector.get().inject(this);
        this._logFilter = globalMessageLogFilter;
    }


    @Override
    public Iterator<? extends GlobalMessageLog> iterator(long firstResult, long maxResults)
    {
        this._logFilter.setFirstResult(firstResult);
        this._logFilter.setMaxResults(maxResults);
        Iterator<GlobalMessageLog> results = Arrays.<GlobalMessageLog> asList().iterator();

        if (this._searchAllowed)
        {
            if (super.getSort() == null)
            {
                results = this._globalMessageLogRepository.search(this._logFilter, "id", false).iterator();
            } else
            {
                results =
                        this._globalMessageLogRepository.search(this._logFilter,
                                super.getSort().getProperty(),
                                super.getSort().isAscending()).iterator();
            }
        }
        return results;
    }
}

最佳答案

我发现了问题并且能够解决它。 大多数评论指出 setFirstResult(int firstResult) 是它使用的类的错误版本。他们是正确的。

基本上,GlobalMessageLogProvider被改变了,但是最新版本的jar从来没有被推送到Nexus服务器(我们自己的私有(private)第三方依赖服务器)。所以,每当我把 jar 拉下来的时候,它总是引用旧的。

手动将最新的 jar 推送到 Nexus 服务器后,我能够成功地使用 gradle 构建项目而没有错误。

所以从这个问题中得出结论: 我们需要创建一个构建过程,自动构建/推送最新版本的 jar 到 Nexus 服务器。我正在考虑使用一些自定义命令/脚本通过我们的 TeamCity 构建服务器创建构建/推送过程。 (如果有任何更好的建议/实践技巧,请随时提供)。

感谢大家的热心帮助,由衷感谢。

关于java - Gradle 提示它无法将 long 转换为 int,即使该方法需要 long 作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31478629/

相关文章:

java - javax.persistence.SequenceGenerator.allocationSize() 应该和 INCREMENT BY 一致吗?

java - 动态面包屑生成——怎么做?

java - 创建 ErpConfigContext 抛出异常

android - 通过Gradle从Maven下载smack4.1失败

android - 找不到 com.google.android.gms :play-services:3. 1.59 3.2.25 4.0.30 4.1.32 4.2.40 4.2.42 4.3.23 4.4.52 5.0.77 5.0.89 5.2.08 6.1.11 6.1.71 6.5。 87

android - Gradle包装器给出错误 “Could not create plugin of type ' AppPlugin'”

android - 在 Lollipop 设备上使用 AppCompat-21 崩溃

android - 找不到 com.android.tools :common:25. 2.3

groovy - 应用程序代码中的gradle build属性

java - 在一个简单的游戏中创建子弹