2014-09-01 53 views
0

在Spring MVC的AOP的項目,我有兩個接口和兩個類,超出了模型類,如下所示:如何修復收藏<type>進口問題在Eclipse

  1. ActivityDao(接口)
  2. ActivityDaoImpl(類)
  3. ActivityService(接口)
  4. ActivityServiceImpl(類)
  5. 活性(類)

模型類(n。 5):

package com.mycompany.myproject.model; 
//... imports 
@Entity 
public class Activity { 
    @NotNull 
    private long id; 
    private String description; 
    public Activity() { 
    } 
    //... getters and setters 
} 

道接口(N 1):

package com.mycompany.myproject.dao; 
import com.mycompany.myproject.model.Activity; 
import java.util.Collection; 

public interface ActivityDao { 
    public Collection<Activity> findAll(); 
    public void delete(Activity activity); 
    public void create(Activity activity); 
    public Activity update(Activity activity); 
    } 
} 

DAO實現(N 2):

package com.mycompany.myproject.dao.impl; 

import com.mycompany.myproject.model.Activity; 
import com.mycompany.myproject.dao.ActivityDao; 
import java.util.Collection; 
// ... other imports 
@Repository 
public class ActivityDaoImpl implements ActivityDao { 

    //... Spring autowiring, etc. 

    public Collection<Activity> findAll(){ //... 
    } 
    // other methods implementation 
} 

服務接口(n。 3):

package com.mycompany.myproject.service; 
import com.mycompany.myproject.model.Activity; 
import java.util.Collection; 
//... other imports 

public interface ActivityService { 
    public Collection<Activity> getAllActivities(); 
    // other method statements 
} 

服務類(N 4):

package com.mycompany.myproject.service.impl; 
import com.mycompany.myproject.model.Activity; 
import com.mycompany.myproject.dao.ActivityDao; 
import java.util.Collection; 
import com.mycompany.myproject.service.ActivityService; 
// ... other imports 
@Service 
@Transactional(readOnly = true) 
public class ActivityServiceImpl implements ActivityService { 

    @Autowired 
    ActivityDao activityDao;  

    public Collection<Activity> getAllActivities(){ //<=== ERROR! 
    return activityDao.findAll(); 
    } 
    // other methods implementation 
} 

的Eclipse爪哇語法checkingg被舒誤差的每個方法與集合中的服務返回類型類實現(n.4)警告返回類型與Dao的方法返回不兼容。

當接受來自快速修復對話框,Eclipse的改變服務的方法類型Collection<com.mycompany.myproject.service.Activity>,而不是Collection<com.mycompany.myproject.model.Activity>建議,這是模型類在正確的地方(甚至更好只是Collection<Activity>,因爲這將是合理的)。

乍一看,Eclipse環境中的java語法調試器似乎對來自Dao類的接口和集合的Collection類型感到困惑,當它們不是它們的時候,將它們視爲不同的類型。

任何想法如何解決這個非常煩人的問題,或者我可能做錯了什麼?非常感謝!

+1

您需要提供ActivityDaoImpl的代碼,以顯示構建Collection並返回它。另外你的ActivityDaoImpl在它前面有類而不是類,這會導致一些問題。 – Aeseir 2014-09-02 04:40:37

+0

@艾西爾,感謝您的回覆。實際上「班級」是拼寫錯誤,在原始代碼中是「班級」。我已經解決了這個問題。顯然,Eclipse正在與構建路徑中的另一個項目的類混淆。強制它更新通過修復面板建議,然後再次寫入正確的導入語句似乎更新編譯器鏈接,現在錯誤不再顯示。再次感謝。 – Alex 2014-09-02 13:19:36

回答

0

我已經解決了這個問題。顯然,Eclipse正在與構建路徑中的另一個項目的類混淆。強制它通過修復面板建議更新導入語句,它激發了構建路徑中相關項目的導入語句。然後再次寫入正確的導入語句似乎更新編譯器鏈接,現在錯誤不再顯示。