zoukankan      html  css  js  c++  java
  • Ensemble.Tofino运行报错Unexpected java bridge exception的解决

    作为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的错误提示(虽然此时没有编译运行工程,但是会检查出来)。如果编译运行项目,则会报如下详细错误:

    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  

    从上面的错误信息可以看出,是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文件,打开找到如下内容:

    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=  

    注释中已经明确说明了,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,一切正常!

    如果有朋友遇到同样的报错信息,参考以上内容修改即可。祝大家好运!

  • 相关阅读:
    Google Plus 是什么?Google+让Google在线资产在日常生活中更普及
    再谈JavaScript的数据类型问题
    [置顶]信息发布系统 Jquery+MVC架构开发(5)DAL层
    Android:一个简单查询界面的实现
    定制圆角带背景色的矩形边框
    提高c#位图操作的速度[抄袭之作]
    使用XmlTextWriter和XmlTextReader操作Xml文件
    使用Mutex实现单程序实例
    单例模式实现延迟加载
    A记录、MX记录、CNAME 记录、URL转发、NS记录解释
  • 原文地址:https://www.cnblogs.com/tristinjet/p/1650386.html
Copyright © 2011-2022 走看看