37

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

 4 years ago
source link: https://www.tuicool.com/articles/yqquQje
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

作为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,一切正常!

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK