flex java 64 bit_在64位操作系统上使用FlashDevelop的Debug功能

博主在64位系统中使用FlashDevelop时遇到调试错误,由于fdb只支持32位JVM导致。解决方案是安装32位JVM,并通过创建启动脚本来指定32位JVM路径,避免影响系统默认的环境变量。文中还探讨了JNI的平台限制和错误原因,并排除了其他不适用的解决方案。
摘要由CSDN通过智能技术生成

最近用上了FlashDevelop。与Flash Builder比起来,它确实优点很多:小巧,快速,灵活的定制功能,免费且开源。

使用FlashDevelop开发AS/Flex/AIR程序的时候,可以使用Flex SDK来编译和调试。Flex SDK使用JAVA写成,需要系统中安装JAVA虚拟机(JVM)。而我的系统中已经安装了64位的JAVA虚拟机。

在调试的时候,FlashDevelop报告了下面的错误。

Debugger startup error: System.BadImageFormatException: 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)

在 net.sf.jni4net.jni.JNI.Dll.JNI_GetDefaultJavaVMInitArgs(JavaVMInitArgs* args)

在 net.sf.jni4net.jni.JNI.Init()

在 net.sf.jni4net.jni.JNI.CreateJavaVM(JavaVM& jvm, JNIEnv& env, Boolean attachIfExists, String[] options)

在 net.sf.jni4net.Bridge.CreateJVM()

在 net.sf.jni4net.Bridge.CreateJVM(BridgeSetup setup)

在 FlashDebugger.DebuggerManager.Start(Boolean alwaysStart)

FlashDevelop是直接调用Flex SDK中的fdb进行调试的,出现这个错误的原因,是因为fdb仅支持32位的JVM。

可是,JAVA不是平台无关的么?为什么fdb却只能支持32位的JVM?

的确,纯JAVA程序确实是平台无关的,但是调用了JNI就不同了,JNI是受平台限制的。而通过上面的报错信息,明显能看出是JNI在报错。

找到了问题所在,解决起来就容易了。

下面是解决步骤:

安装32位的JVM。JVM是允许32位和64位共存的。

将环境变量JAVA_HOME改为指向32位JVM的安装路径。

搞定。

但是,在64位操作系统中修改JAVA_HOME环境变量指向32位JVM是个愚蠢的做法。因为这样会导致操作系统中默认使用32位的JVM。所以,有个稍微麻烦一点的办法。

安装32位的JVM。我的JVM 32bit安装在C:\Program Files (x86)\Java\jre7目录。

在FlashDevelop.exe文件相同的目录下创建一个startFD.bat文件,写入如下内容:

set JAVA_HOME=C:\Program Files (x86)\Java\jre7

start FlashDevelop.exe

双击startFD.bat,程序会首先设置JAVA_HOME变量,然后启动FlashDevelop,并关闭cmd窗口。

使用这种方式设置的JAVA_HOME环境变量,只在启动FlashDevelop.exe的时候有效,不会影响系统的已有的环境变量。

网上还能搜到一些其它的解决方案,让我们来看看:

方案1,来源

复制 jre\bin中的msvcr71.dll到Windows\System32下就可以了

这个方案明显是针对32位操作系统的,所以解决不了本文的问题。

方案2,来源

Googling about this problem tells that many users have this in JDK 6 solved with msvcr71.dll, but not for me

frownie.png

And it’s because I have latest JDK 7 which needs msvcr100.dll, so just

find this DLL in “jre7/bin” directory and copy to FlashDevelop.exe

folder.

For thos who had BadImage problem while building on x64 system, don’t

forget, that now FD4 uses x32 component, so set JAVA_HOME to point to

x32 version of JDK.

这个方案说的比较详细,也指明了JDK7与JDK6所需的msvcr*.dll并不相同。不过按这个方案也是解决不了本文的问题的。倒是最后那句话给了我解决问题的启示。

转自:http://zengrong.net/post/1692.htm

用了编辑startFD.bat的方法,很好用.

存档待查

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值