从迁移到Java 7的小技巧
生活随笔
收集整理的這篇文章主要介紹了
从迁移到Java 7的小技巧
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
經過幾年的努力,我們終于開始在軟件級別方面將我們的應用程序從黑暗時代中拉出來,其中一個步驟是將我們的Java版本升級到Java7。在大多數情況下,這相當輕松,但是有一些驚喜:
- 當我們切換到Java 7時,已經運行了好幾年的測試用例開始失敗。事實證明,我們有一些測試用例依賴于同一類中的先前測試用例。 這在兩個方面都是不好的:1)測試用例應該各自獨立; 2)測試類中測試用例的執行順序是不能保證的,盡管到目前為止(在Java 7之前),順序是找到的在源代碼中。 我發現此鏈接有助于解釋不一致情況
我在Eclipse中看到的排序。 這不是Java 7的問題,而是我們的測試用例。 當我們開始使用Java 7時出現的一些東西 - 我們的Swing客戶開始拋出ClassCastExceptions ,并且該代碼已經存在了10多年了,可以追溯到Java 1.4。讀取javadocs可以解釋這個問題,但是我決定進行更多研究以找出發生這種情況的確切原因。現在。 我們正在向TreeSet中添加條目,以保存FocusManager的前進和后退遍歷鍵,并將KeyStroke對象放入TreeSet中。 Javadoc明確指出放置在TreeSet(或下面的TreeMap)中的對象必須是可比較的,或者您需要使用Comparator創建TreeSet以便對這些對象進行排序。 我們什么都不做,也沒有例外。 深入研究Java源代碼,我發現從Java 7開始,TreeMap類已開始強制執行此“要求”,在該類的早期版本中該代碼已被注釋掉,因此實際上并不需要比較器。 修復很容易,我創建了一個KeyStrokeComparator并將其傳遞給TreeSet構造函數。
- 我還注意到,我們的Java jar簽名已開始記錄有關證書無效的警告。 為了保持構建的整潔而不發出這些警告,我進行了一些搜索,發現了一些與Java 7相關的帖子,并從代碼簽名證書中刪除了MD2withRSA算法。 我在Verisign的支持下工作,以幫助從證書鏈中刪除該算法,并且警告消失了! 不幸的是,這還沒有結束代碼簽名問題。
- 接下來,我們的Web Start客戶端將不再成功啟動,而是引發異常,至少在開發過程中,Web起始程序經常會遇到“ 并非所有罐子都使用同一證書簽名的錯誤消息”錯誤消息。 我寫了另一篇關于如何幫助調試的博客文章 ,認為這只是“常見的可疑罐子之一”,我們有問題,但不是,不是。 知道自證書更新以來所有這一切都發生了,這使我檢查了所有已簽名的罐子以尋找線索。 所有罐子均已使用相同的證書簽名,但是在刪除鏈條目之前,對第三方罐子進行了簽名,而在更改證書后,我們的應用程序代碼已作為構建過程的一部分簽名。 這使我相信,即使罐子是用相同的證書簽名的,在更改證書之前和之后簽名的罐子之間也必須有一些區別。
- 當我們切換到Java 7時,已經運行了好幾年的測試用例開始失敗。事實證明,我們有一些測試用例依賴于同一類中的先前測試用例。 這在兩個方面都是不好的:1)測試用例應該各自獨立; 2)測試類中測試用例的執行順序是不能保證的,盡管到目前為止(在Java 7之前),順序是找到的在源代碼中。 我發現此鏈接有助于解釋不一致情況
對jar進行簽名后,將在jar內的MANIFEST.MF文件中生成條目,對于jar中的每個類一個條目。 這些條目包含類的名稱以及一些簽名算法信息,并且在查看MANIFEST.MF文件之后,我發現了區別。 更改前簽名的第3方jars包含每個類的SHA1-Digest條目,但從當前版本簽名的jars中包含SHA-256-Digest條目。 用更新的證書重新簽名所有的第3方jar可以解決大多數問題。 我們在重新簽名過程中遇到了一個小問題,在該過程中,我們用自己生成的版本重寫了現有的MANIFEST.MF,這導致了幾個jar文件出現問題,這些jar文件在清單文件中包含其他服務提供商信息。
全天工作! 很高興成為Java領域的最新專家。 接下來,遷移到EJB3和Hibernate 3或4。
希望這可以幫助!
翻譯自: https://www.javacodegeeks.com/2013/05/minor-gotchas-from-migration-to-java-7.html
總結
以上是生活随笔為你收集整理的从迁移到Java 7的小技巧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 南部县房产备案查询网(南部县房产备案查询
- 下一篇: 房屋买卖备案登记(房屋买卖备案)