Flash Builder 4.7 Ant构建问题



我希望有人能帮忙。

我有一个使用Ant进行版本构建的大型项目,它必须是"在与工作区相同的JRE中运行"这在fb4.5和4.6中一直很好,但在4.7中,fb.exportReleaseBuild给了我们一个java.lang.NullPointerException.

我可以在4.6中加载项目并暂时构建它,但由于你再也无法获得4.6,这不是一个长期的解决方案。

我可以在两台电脑上复制4.7中的问题,方法如下:

创建一个名为"buildTest"的新flex项目,添加生成文件夹,创建一个名为build.xml的新文件(在build文件夹中(在构建文件中放入以下内容:

<?xml version="1.0" encoding="utf-8"?>
 <project default="default" basedir="../">
                <!-- target: default -->
                <target name="default">
                               <fb.exportReleaseBuild project="BuildTest"/>
                </target>
 </project>

右键单击构建文件,运行方式->Ant Build…->JRE(选项卡(->选择"在与工作区相同的JRE中运行"->单击"运行">

如果你在4.6中这样做(在我的任何一个盒子上(,效果都很好。如果你在4.7中做(再次在任一框中(,你会得到以下错误:

生成失败C: \Users\germanD1\Documents\Projects\test Projects\Ant test\BuildTest\build\build.xml:6:java.lang.NullPointerException

你甚至可以在4.7中创建它并看着它失败,然后在4.6中打开相同的项目并看着它工作!!!

我希望有人能帮忙,这让我很生气。

非常感谢Dan

不幸的是,在FlashBuilder 4.7中使用fb.exportReleaseBuild ant任务时,似乎无法解决NullPointerException。

我最近也遇到了这个问题,并决定破解fb.exportReleaseBuild的实现,它最终直接调用ExportReleaseVersionManager.java代码,该代码执行FlashBuilderEclipse插件提供的"Export Release Build"功能。

如果您查看erorr日志或启用足够的ant输出,则报告的NullPointerException为:

com.adobe.flexbuilder.exportimport.releaseversion.ExportReleaseVersionManager.doBuild(ExportReleaseVersionManager.java:222(

如果你对有问题的文件进行反编译,你会发现错误的原因:

    220    if (PlatformUI.isWorkbenchRunning()) {
    221        IWorkbench workbench = PlatformUI.getWorkbench();
    222        IEditorPart[] dirtyEditors = workbench.getActiveWorkbenchWindow().getActivePage().getDirtyEditors();
    223        assert (dirtyEditors.length == 0);
    224    }

事实证明,如果方法是从非UI线程调用的,那么对workbench.getActiveWorkbenchWindow((的调用将始终返回null,而当您运行ant构建时,这是一个非UI线程。

因此,很明显,这并没有像前面所说的那样经过回归测试,而且很可能没有办法修复它,当然,除非有源代码,这将使修复变得微不足道。

感谢Adobe!

我知道你的帖子是不久前发布的,但昨天我遇到了同样的问题,所以对于其他面临这一问题的人,我记下了我的经历。我无法在FB 4.7中使用ant进行编译,得到java.lang.NullPointerException。我认为RIAstars的评论是正确的,但由于技术已经过时,无论出于何种原因,你仍然喜欢Flex/Flash,你仍然需要解决方案;在这里我看到了三种可能性:

  • 在你的机器上并排安装FB 4.6和FB 4.7,并在FB 4.6中完成蚂蚁任务,同时在FB 4.7上进行开发
  • 试着从命令行让你的build.xml在Ant内部运行(在windows上:下载Ant,将环境变量Ant_HOME和Path(append(设置为Ant的安装路径,并将sdks\4.11.0\Ant\lib\flexTasks.jar传递到Ant的lib文件夹,用命令行导航到build.xml文件夹,键入Ant并点击回车键(
  • 尝试另一个IDE,周围有一些(例如,检查Flash Builder的快速替代方案(

在我的案例中,我未能使用fb.exportReleaseBuild使其在我的模块化项目结构上运行。我创建了一个蚂蚁脚本,首先从我的项目中进行-dump-config(编译器选项(,并从sourcemate中生成一个蚂蚁剧本(为你做了大约50%的工作,并很好地介绍了蚂蚁语法,但只适用于FB 4.6 lol(。在此基础上,我创建了我的ant构建文件,并通过研究和尝试错误(第一次使用ant(一步一步地修复了错误。我使用带有cmd行的ant来创建我的发布版本。

好吧,所有这些都非常烦人和耗时——做这样的发布构建,但至少它是有效的,并且是自动化的。

相关内容

  • 没有找到相关文章

最新更新