When running "gradle build" I got the following error with one of our projects, couple of the classes get the following compile error:
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
Even though, the method setFirstResult
takes a long
as parameter.
Here is the code:
public void setFirstResult(long firstResult) {
this._firstResult = firstResult;
}
I have tried --refresh-dependencies
and cleared out cache etc. None of those worked for me. In addition, this project was a maven project, I converted it over to use gradle instead.
Edit:
I'm adding additional context here per the request from the comments:
Here is the source code for the 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;
}
}
Here is the full stack-trace
λ 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
Edit:
added the source code of 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;
}
}
this._firstResult
is anint
? – Knawellong
....private long _firstResult = 0L;
– Invincibleint
is required, so could it be the case that Gradle uses another .setFirstResult method declaration (built-in one?), but you provide along
, so here a type mismatch. – Textual_logFilter
type might help. There's not enough context in the question to diagnose the error. The workaround is to cast the argument:setFirstResult((int) firstResult)
. – ConfiteorGlobalMessageLogProvider.java:36
? Where'sthis._logFilter
set? – MormonsetFirstResult(int firstResult)
? Perhaps a subclass ofGlobalMessageLogFilter
? Such that Gradle perhaps doesn't know which class to use? Where's the parameterglobalMessageLogFilter
of the constructor coming from, is this obtained via injection (sorry, I'm not familiar with Spring)? Or do you instantiate this object somewhere? – MormonGlobalMessageLogFilter
that usedint
rather thanlong
. – Confiteor