转载

Ensemble.Tofino运行报错Unexpected java bridge excep...

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

unexpected?exception:?Ensemble.Tofino.Plugin.Support.FlexJavaBridgeException:?Unexpected?java?bridge?exception. ??
Tofino?version:?2.2010.1.7 ??
Microsoft??Visual?Studio??2008?9.0.30729.1?built?by:?SP ??
Using?JVM:?C:/Program?Files/Java/j2re1.4.2_19/bin/client/jvm.dll ??
OS:?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)????????-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文件,打开找到如下内容:

# ??
#?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,一切正常!

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

原文  http://www.cocoachina.com/articles/30375
正文到此结束
Loading...