2015-06-22 36 views
1

我有一個使用Proxetta和JTX通過服務類創建事務的jodd項目。問題是,當我嘗試調試服務類我得到:Jodd proxy由於缺少行號屬性而無法安裝斷點

無法安裝斷點由於缺少行號屬性

我懷疑沒有事做與他們的方式Proxetta產生我的代理類,因爲它似乎在春天如果你沒有類的接口發生同樣的情況。

我用Eclispe的,在這裏Proxetta如何初始化:

public void initProxetta() { 

    ProxyAspect txServiceProxy = new ProxyAspect(AnnotationTxAdvice.class, 
     new MethodAnnotationPointcut(Transaction.class) { 
      @Override 
      public boolean apply(MethodInfo mi) { 
       return isPublic(mi) && 
         isTopLevelMethod(mi) && 
         matchClassName(mi, "*ServiceImpl") && 
         super.apply(mi); 
      } 
     }); 

    proxetta = ProxyProxetta.withAspects(txServiceProxy); 
    proxetta.setClassLoader(this.getClass().getClassLoader()); 
} 
+0

我會檢查這個 - 在調試服務時我沒有IntelliJ IDEA問題。我的意思是;我可以將該斷點放入服務中,並且這將起作用。什麼不適用於調試可能會進入代理。再次,將檢查! – igr

+0

我也測試過導入項目,以消除火星和相同的結果。 –

回答

0

請您嘗試以下quickstart webapp1 example

它的gradle項目,所以你可以在任何IDE中快速導入它。在這個例子中,我們創建的代理幾乎和上面一樣,但是對於動作(這不應該有所作爲)。現在嘗試在IndexAction中添加一個斷點 - 例如,這個斷點會被代入。我可以在IntelliJ IDEA中放置中斷點。

此外,我不知道Eclipse爲什麼會抱怨服務實現類中的斷點,因爲上面使用的Proxetta創建了代理子類,並且沒有以任何方式更改目標類。所以當你在服務實現代碼中放置斷點時,它就在你的類中,而不是代理類中。

最後,你把BP放在方法上,還是放在代碼裏面?如果它是第一個(在方法上),那麼請嘗試將BP放入服務的代碼中:例如,在方法主體的第一行。

+0

嘿,這有幫助嗎? – igr

相關問題