Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Flash Builder 4.7 Ant构建问题_Apache Flex_Ant_Flash Builder_Java_Flex4.7 - Fatal编程技术网

Apache flex Flash Builder 4.7 Ant构建问题

Apache flex Flash Builder 4.7 Ant构建问题,apache-flex,ant,flash-builder,java,flex4.7,Apache Flex,Ant,Flash Builder,Java,Flex4.7,我希望有人能帮上忙 我有一个大型项目,它使用Ant进行发布构建,必须“在与工作区相同的JRE中运行” 这在fb4.5和4.6中一直很好,但在4.7中,fb.exportReleaseBuild给了我们一个java.lang.NullPointerException 我可以在4.6中加载项目并暂时构建它,但由于您不能再获得4.6,因此这不是一个长期的解决方案 通过执行以下操作,我可以在两台PC上重现4.7中的问题: 创建一个名为“buildTest”的新flex项目, 添加生成文件夹, 创建一个名

我希望有人能帮上忙

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

我可以在4.6中加载项目并暂时构建它,但由于您不能再获得4.6,因此这不是一个长期的解决方案

通过执行以下操作,我可以在两台PC上重现4.7中的问题:

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


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

如果您在4.6中这样做(在我的任何一个框中),它都可以正常工作。如果您在4.7中执行此操作(在任一框中再次执行),则会出现以下错误:

构建失败 C:\Users\germanD1\Documents\Project\test Projects\Ant test\BuildTest\build\build.xml:6:java.lang.NullPointerException

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

我希望有人能帮上忙,这让我快发疯了

非常感谢
Dan

我知道你的帖子是很久以前的事了,但昨天我遇到了同样的问题——所以对于其他面临这个问题的人,我记下了我的经历。我无法在FB4.7中使用ant进行编译,从而获得java.lang.NullPointerException。我认为RIAstars的评论是正确的,但由于技术是生命的终结,无论出于什么原因,你仍然喜欢Flex/Flash,你仍然需要一个变通的方法;在这里,我看到三种可能性:

  • 在您的机器上并排安装FB4.6和FB4.7,并在FB4.6中执行ant任务,同时在FB4.7上进行开发
  • 尝试从命令行让build.xml在Ant内部运行(在windows上:下载Ant,将环境变量Ant_HOME和Path(append)设置为Ant的安装路径,并将sdks\4.11.0\Ant\lib\flexTasks.jar传递到Ant的lib文件夹,使用命令行导航到build.xml文件夹,键入Ant并按enter键)
  • 尝试另一个IDE,周围有一些(例如检查)
在我的例子中,我未能使用fb.exportReleaseBuild使其在我的模块化项目结构上运行。我首先从我的项目中创建了一个ant脚本,使用doa-dump-config(编译器选项),然后从sourcemate中生成一个ant脚本(为您完成了大约50%的工作,并且在ant语法方面做了一个很好的介绍,但只适用于FB 4.6 lol)。在此基础上,我创建了我的ant构建文件,并通过研究和尝试逐步修复了错误(我第一次使用ant)。我使用带有cmd行的ant来创建我的发布版本


好吧,所有这些都非常烦人和耗时-像这样进行发布构建,但至少它可以工作并且是自动化的。

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

我最近也遇到了这个问题,并决定破解fb.exportReleaseBuild的实现,它最终直接调用ExportReleaseVersionManager.java代码,该代码执行FlashBuilder Eclipse插件提供的“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断言(dirtyEditors.length==0);
224    }
事实证明,如果该方法是从非UI线程调用的,那么对的调用将始终返回null,并且当您运行ant构建时,该方法是非UI线程

因此,很明显,正如前面所说,这不是经过回归测试的,而且很可能没有办法修复它,当然,除非有源代码,这将使修复变得非常简单


谢谢Adobe

“但由于您无法再获得4.6版,因此这不是一个长期的解决方案”
>FlashBuilder作为一个产品并不是一个长期的解决方案。我建议您切换到由尊重您的公司开发的IDE。Adobe迟早会放弃FlashBuilder或至少放弃对Flex的支持。显然,他们已经削减了回归测试的预算:不幸的是,你的回归bug不是唯一的:(我的情况更糟,我甚至没有4.6或4.5。。。
<?xml version="1.0" encoding="utf-8"?>
 <project default="default" basedir="../">
                <!-- target: default -->
                <target name="default">
                               <fb.exportReleaseBuild project="BuildTest"/>
                </target>
 </project>