2017-01-23 174 views
1

我利用Scala和Java之間的互操作性,並使用Scala的下面的代碼,在用Java編寫的同一個項目中實例化一個類。 CommandExecutor參數是從父類繼承的。Scala無法解析構造函數

class IdmIdentityServiceImpl extends ServiceImpl with IdmIdentityService { 
    override def createNativeUserQuery: NativeUserQuery = { 
     new NativeUserQueryImpl(commandExecutor) 
     } 
} 

我得到一個錯誤,在實例NativeUserQueryImpl,說cannot resolve constructor

NativeUserQueryImpl是用Java編寫的,但我一直在閱讀有關Java和Scala之間的互操作性,感覺像它應該工作。

這是NativeUserQueryImpl類,它在其構造函數之一中包含CommandExecutor類型。該類來自流動引擎庫。

public class NativeUserQueryImpl extends AbstractNativeQuery<NativeUserQuery, User> implements NativeUserQuery { 

    private static final long serialVersionUID = 1L; 

    public NativeUserQueryImpl(CommandContext commandContext) { 
    super(commandContext); 
    } 

    public NativeUserQueryImpl(CommandExecutor commandExecutor) { 
    super(commandExecutor); 
    } 

    // results //////////////////////////////////////////////////////////////// 

    public List<User> executeList(CommandContext commandContext, Map<String, Object> parameterMap, int firstResult, int maxResults) { 
    return commandContext.getUserEntityManager().findUsersByNativeQuery(parameterMap, firstResult, maxResults); 
    } 

    public long executeCount(CommandContext commandContext, Map<String, Object> parameterMap) { 
    return commandContext.getUserEntityManager().findUserCountByNativeQuery(parameterMap); 
    } 

} 

編輯:

完整的錯誤

Error:(31, 5) overloaded method constructor NativeUserQueryImpl with alternatives: 
    (x$1: org.flowable.idm.engine.impl.interceptor.CommandExecutor)org.flowable.idm.engine.impl.NativeUserQueryImpl <and> 
    (x$1: org.flowable.idm.engine.impl.interceptor.CommandContext)org.flowable.idm.engine.impl.NativeUserQueryImpl 
cannot be applied to (org.flowable.engine.impl.interceptor.CommandExecutor) 
    new NativeUserQueryImpl(commandExecutor) 
+0

commandExecutor定義在哪裏? – nmat

+0

@nmat在同一個項目中 – Rafa

+0

它從父類繼承。我添加了包含在其中的完整類簽名。它位於'ServiceImpl' – Rafa

回答

0

從張貼在原來的問題完整的錯誤,看來是從ServiceImpl父類繼承的CommandExecutor有兩個不同的版本圖書館

org.flowable.idm.engine.impl.interceptor.CommandExecutororg.flowable.engine.impl.interceptor.CommandExecutor其中細微的區別在於一個來自idm包,而另一個不是。

將ServiceImpl從第二個包更改爲第一個,更新正在傳入的參數CommandExecutor並修復了問題。

相關問題