Ensemble.Tofino運行報錯Unexpected java bridge exception的解決

來源:互聯網
上載者:User

作為Visual Studio外掛程式的Flex開發工具,Ensemble公司的Tofino確實很吸引人,包含編譯環境的安裝檔案總共才122M,比起Flex Builder要不少。而且,對於熟悉了VS開發環境的.Net程式員,用這樣的外掛程式來做Flex開發方便了很多。

從官網下載安裝檔案,選擇122M的包含開發編譯環境的安裝包下載。關閉Visual Studio,安裝成功後開啟Visual Studio,正常情況下Flex項目會出現在建立項目的頁面上。建立一個Flex工程,如果你機器的java環境配置不正確,就會跟我一樣,出現Ensemble.Tofino.Plugin.Support.FlexJavaBridgeException: Unexpected java bridge exception的錯誤提示(雖然此時沒有編譯運行工程,但是會檢查出來)。如果編譯運行項目,則會報如下詳細錯誤:

view plaincopy to clipboardprint?
  1. unexpected exception: Ensemble.Tofino.Plugin.Support.FlexJavaBridgeException: Unexpected java bridge exception.   
  2. Tofino version: 2.2010.1.7   
  3. Microsoft? Visual Studio? 2008 9.0.30729.1 built by: SP   
  4. Using JVM: C:\Program Files\Java\j2re1.4.2_19/bin/client/jvm.dll   
  5. OS: Windows XP (Microsoft Windows NT 5.1.2600 Service Pack 3) ---> System.Runtime.InteropServices.SEHException: 外部組件發生異常。   
  6.    在 Ensemble.Tofino.Plugin.Support.FlexJavaBridge.EnsureInitialized()   
  7.    在 Ensemble.Tofino.Plugin.Support.FlexJavaBridge.InvokedUnLockedAction(JavaAction action)   
  8.    --- 內部異常堆疊追蹤的結尾 ---   
  9.    在 Ensemble.Tofino.Plugin.Support.FlexJavaBridge.InvokedUnLockedAction(JavaAction action)   
  10.    在 Ensemble.Tofino.Plugin.Support.FlexJavaBridge.InvokedLockedAction(JavaAction action)   
  11.    在 Ensemble.Tofino.Plugin.Support.FlexJavaBridge.StartBuild(String projectDir, LogCallback logCallback, ProgressCallback progressCallback)   
  12.    在 Ensemble.Tofino.Plugin.Compiler.FlexBuilder.Build()   
  13.    在 Ensemble.Tofino.Plugin.Project.FlexProject.InvokeMsBuild(String target)        -1  0   FlexApplication1  
unexpected exception: Ensemble.Tofino.Plugin.Support.FlexJavaBridgeException: Unexpected java bridge exception.Tofino version: 2.2010.1.7Microsoft? Visual Studio? 2008 9.0.30729.1 built by: SPUsing JVM: C:\Program Files\Java\j2re1.4.2_19/bin/client/jvm.dllOS: Windows XP (Microsoft Windows NT 5.1.2600 Service Pack 3) ---> System.Runtime.InteropServices.SEHException: 外部組件發生異常。   在 Ensemble.Tofino.Plugin.Support.FlexJavaBridge.EnsureInitialized()   在 Ensemble.Tofino.Plugin.Support.FlexJavaBridge.InvokedUnLockedAction(JavaAction action)   --- 內部異常堆疊追蹤的結尾 ---   在 Ensemble.Tofino.Plugin.Support.FlexJavaBridge.InvokedUnLockedAction(JavaAction action)   在 Ensemble.Tofino.Plugin.Support.FlexJavaBridge.InvokedLockedAction(JavaAction action)   在 Ensemble.Tofino.Plugin.Support.FlexJavaBridge.StartBuild(String projectDir, LogCallback logCallback, ProgressCallback progressCallback)   在 Ensemble.Tofino.Plugin.Compiler.FlexBuilder.Build()   在 Ensemble.Tofino.Plugin.Project.FlexProject.InvokeMsBuild(String target)-10FlexApplication1

從上面的錯誤資訊可以看出,是Tofino的dll在配置java環境時出錯,找到這一行:

Using JVM: C:\Program Files\Java\j2re1.4.2_19/bin/client/jvm.dll

取到的是jre的路徑,那麼應該是jre中bin路徑錯誤,需要java.dll所在的目錄,而這裡缺少bin目錄。那Tofino是怎麼取到java環境的路徑呢?我麼來看下Tofino的安裝目錄。

在Tofino安裝目錄下的sdks\3.2.0\bin目錄中,有個jvm.config檔案,開啟找到如下內容:

view plaincopy to clipboardprint?
  1. #   
  2. # VM configuration   
  3. #   
  4. # Where to find JVM, if {java.home}/jre exists then that JVM is used   
  5. # if not then it must be the path to the JRE itself   
  6. #   
  7. # If no java.home is specified a VM is located by looking in these places in this   
  8. # order:   
  9. #   
  10. #  1) JAVA_HOME environment variables (same rules as java.home above)   
  11. #  2) bin directory for java.dll (windows) or lib/<ARCH>/libjava.so (unix)   
  12. #  3) ../jre    
  13. #  4) registry (windows only)   
  14. #   
  15.   
  16. java.home=  
## VM configuration## Where to find JVM, if {java.home}/jre exists then that JVM is used# if not then it must be the path to the JRE itself## If no java.home is specified a VM is located by looking in these places in this# order:##  1) JAVA_HOME environment variables (same rules as java.home above)#  2) bin directory for java.dll (windows) or lib/<ARCH>/libjava.so (unix)#  3) ../jre #  4) registry (windows only)#java.home=

注釋中已經明確說明了,jvm運行環境的檢查先後順序

1.環境變數中JAVA_HOME指向的位置;

2.java.dll(Windows)或lib/<arch>/libjava.so(unix)的位置;

3.jre的位置;

4.設定檔中指向的位置(windows).

java.home=就可以直接配置jvm的實際位置,即java.dll所在目錄。

查看我的機器上的環境變數,JAVA_HOME指向的jre為安裝目錄的根目錄,應該改為包含bin的目錄。修改JAVE_HOME的路徑,比如C:\Program Files\Java\jre6\bin。重新啟動Visual Studio,編譯運行Flex項目,OK,一切正常!

如果有朋友遇到同樣的報錯資訊,參考以上內容修改即可。祝大家好運!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.