2013-05-13 97 views
2

我希望有一個人可以提供幫助。Flash Builder 4.7 Ant構建問題

我有使用Ant發佈建立一個大的項目,必須是「在同一個JRE作爲工作區運行」 這一直在fb4.5被罰款和4.6,但4.7 fb.exportReleaseBuild爲我們提供了一個java .lang.NullPointerException。

我可以在4.6中加載項目並立即構建它,但因爲無法獲得4.6,所以這不是一個長期的解決方案。

我可以通過以下操作重現該問題在4.7兩臺PC:

創建一個新的Flex項目名爲「buildTest」, 添加build文件夾, 創建一個名爲build.xml的新文件(在build文件夾) 放入構建文件執行以下操作:

<?xml version="1.0" encoding="utf-8"?> 
<project default="default" basedir="../"> 
       <!-- target: default --> 
       <target name="default"> 
           <fb.exportReleaseBuild project="BuildTest"/> 
       </target> 
</project> 

右鍵單擊構建文件, 運行方式 - > Ant構建... - > JRE(標籤) - >中選擇「運行與工作空間相同的JRE「 - >點擊」運行「

如果你在4.6(在我的任何一個盒子上)這樣做,它工作正常。如果你在4.7(再在任何一個盒子上)做,你會得到以下錯誤:

BUILD FAILED C:\ Users \ germanD1 \ Documents \ Projects \ test項目\ Ant測試\ BuildTest \ build \ build.xml: 6:java.lang.NullPointerException

你甚至可以創建它,並觀察它在4.7中失敗,然後在4.6中打開相同的proj並觀看它的工作!

我希望有人能幫忙,這讓我發瘋。

非常感謝 丹

+0

'「但是由於您無法獲得4.6,因此這不是一個長期的解決方案。」> FlashBuilder作爲產品不是一個長期的解決方案。我建議您切換到由尊重您的公司開發的IDE。不久之後,Adobe將放棄FlashBuilder或至少支持Flex。很明顯,他們已經削減了迴歸測試的預算:不幸的是你的迴歸bug不是唯一的:( – RIAstar 2013-05-13 14:09:45

+0

我有更糟糕的,我甚至沒有4.6或4.5 ... – 2014-05-20 13:54:03

回答

0

我知道你的職位是前一陣子,但昨天同樣的問題打了我 - 所以對於任何人面對這個我記下我的經驗。我無法在FB 4.7中用ant編譯得到java.lang.NullPointerException。我認爲RIAstars的評論是真實的,但由於技術是生命的終結,並且無論出於何種原因你仍然使用Flex/Flash,你仍然需要解決方法;在這裏,我看到三種可能性:

  • 你的機器4.7並排側上安裝FB 4.6和FB,做你的Ant任務在FB 4.6,而你開發的FB 4.7
  • 儘量讓你的身材。 xml從命令行在Ant中運行(在windows上:下載ant,將環境變量ANT_HOME和Path(追加)設置爲ant的安裝路徑,並將sdks \ 4.11.0 \ ant \ lib \ flexTasks.jar傳遞給ant的lib文件夾,用命令行導航到build.xml文件夾,輸入ant並回車)。
  • 嘗試另一個IDE,也有一些周圍(例如檢查Fast alternative to Flash Builder

在我來說,我fb.exportReleaseBuild沒能在我的模塊化項目結構運行。我首先在我的項目中做了一個-dump-config(編譯器選項),然後用sourcemate生成一個ant腳本(爲你做了大約50%的工作,並且在ant語法中做了一個很好的介紹,但是隻能用與FB 4.6 lol)。在這個基礎上,我創建了我的ant構建文件,並通過研究和嘗試錯誤(第一次使用ant)逐步修復錯誤。我使用ant與cmd行來創建我的發佈版本。那麼,所有非常煩人和費時 - 做一個像這樣的發佈版本,但至少它是有效的並且是自動化的。

3

不幸的是,在FlashBuilder 4.7中使用fb.exportReleaseBuild ant任務時,似乎無法解決NullPointerException。

我最近也遇到過這個問題,並決定破解fb.exportReleaseBuild的實現,最終直接調用執行由FlashBuilder Eclipse插件提供的「Export Release Build」功能的ExportReleaseVersionManager.java代碼,在。

如果您查看erorr日誌或啓用足夠的螞蟻輸出,報NullPointerException異常是:

com.adobe.flexbuilder.exportimport.releaseversion.ExportReleaseVersionManager.doBuild(ExportReleaseVersionManager.java:222)

如果編譯有問題的文件,你會找到原因的錯誤:

220 if (PlatformUI.isWorkbenchRunning()) { 
    221  IWorkbench workbench = PlatformUI.getWorkbench(); 
    222  IEditorPart[] dirtyEditors = workbench.getActiveWorkbenchWindow().getActivePage().getDirtyEditors(); 
    223  assert (dirtyEditors.length == 0); 
    224 } 

事實證明,調用workbench.getActiveWorkbenchWindow()將始終返回null,如果該方法是從非UI線程調用的,並且在運行ant構建時(即非UI線程)。

因此,顯然,這不是迴歸測試,如前所述,並且有可能沒有辦法修復它,除非當然有源代碼,這將使它超出微不足道的修復。

謝謝Adobe!

+0

這只是瘋狂的,但謝謝。 – 2017-02-08 16:10:30