Apache flex 构建Flex时出现奇怪问题(在正确代码上出现不相关错误时失败)

Apache flex 构建Flex时出现奇怪问题(在正确代码上出现不相关错误时失败),apache-flex,mxmlc,Apache Flex,Mxmlc,注意:我已经多次编辑了这个问题,并重新设置了格式,以便更好地表达这个问题 问题 我的身材有问题。当我向代码中添加一条有效语句时,它将不再兼容,并且会因不相关文件中的错误而失败。我在命令行上使用ant构建或使用mxmlc构建时遇到这些问题 向myLittleBox.mxml添加有效语句将导致此错误。请注意: 所有错误都在ViewerMain.mxml中。此文件不是主mxml文件,但它是从主mxml文件引用的 更改myLittleBox.mxml ViewerMain.mxml之前,没有编译错误

注意:我已经多次编辑了这个问题,并重新设置了格式,以便更好地表达这个问题

问题 我的身材有问题。当我向代码中添加一条有效语句时,它将不再兼容,并且会因不相关文件中的错误而失败。我在命令行上使用ant构建或使用mxmlc构建时遇到这些问题

向myLittleBox.mxml添加有效语句将导致此错误。请注意:

  • 所有错误都在ViewerMain.mxml中。此文件不是主mxml文件,但它是从主mxml文件引用的
  • 更改myLittleBox.mxml ViewerMain.mxml之前,没有编译错误
  • 没有与myLittleBox.mxml相关的错误
  • myLittleBox.mxml没有对ViewerMain的引用,只使用spark组件
  • ViewerMain.mxml没有直接引用myLittleBox.mxml。它的children的children将引用myLittleBox.mxml
  • 添加到myLittleBox.mxml的有效语句可能有很多内容(它们都破坏了它),包括一条注释
问题: 是什么导致了这些错误?我怎样才能修好它们?我们非常感谢您的提示或一些见解

编译错误(可选读取) 实际代码(可选读数) 工作代码-编译精细无问题(可选阅读) 构建不会中断。同时,如果我添加的ArrayCollection定义超过4-5行,构建将中断。但是,如果定义仅覆盖1-2行,构建将不会中断

其他信息(可选阅读)
  • 使用Flex4.0
  • Ant1.7.0(?我想。不确定找到这个的最佳方式。如果有人想要信息,我会的)
  • Eclipse(flashbuilder)
临时解决方案(按要求) 我的项目如下所示:

        Model
     /        \
Viewer 1    Viewer 2
我有两个观众是从同一个模型上分开的。它们都有对模型的引用,但彼此之间没有引用,并且模型也没有对任一查看器的引用

  • ViewerMain.mxml文件位于查看器1中
  • myLittleBox.mxml文件位于查看器2中
我注意到模型在查看器1中使用了一个常量。这导致在构建查看器2时构建所有查看器1。我将常量从查看器1移动到模型中(无论如何它都应该在这个位置),并且我的项目成功构建,因为查看器1和查看器2不是同时构建的


这可以解决问题,但这只是解决问题的一个症状。我仍然很好奇,当我向myLittleBox.mxml添加注释时,是什么导致编译器在ViewerMain.mxml上失败的。我想现在这仍然是个谜

要诊断MXML代码生成问题,请通过向Flex编译器添加“-keep”附加编译器参数来保留生成的ActionScript

这将使您能够查看编译器从MXML标记生成的ActionScript。生成的类文件包括由编译器生成并用于构建SWF文件的存根和类


浏览到/bin/generated以查看源代码。

我也遇到了这个问题,可以通过以下更改来解决。 而不是,例如:

model.textInput.text = "";
使用


这似乎很有帮助。

使用Flash Builder,您所说的不可编译的代码实际上可以毫无问题地编译。肯定还有别的事,但我不知道发生了什么。您应该考虑共享使用“不编译组”的代码。添加额外的注释不应破坏构建。可能尝试重命名myLittleBox.mxml,以防有一些对它的长期引用,如bin debug或其他。写得好的问题btw@BrianBishop我已经尽了我所能来消除这样的问题。我删除了文件,构建(成功)并手动重新键入。我完全不知道是什么导致了这个问题。mxmlc编译器似乎达到了某种大小限制或其他什么。还有一件事——您是否尝试过针对更新/不同的SDK 4.5.1进行编译,只是为了进行推断?@Brain yes。上周试过了,但没有乐趣。
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx"
         >

    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;

            private var thisWillNotBrakeIt:String = "Done breaking";
            /*
                This 
                is 
                going
                to 
                break
                it.

                Interestingly it
                did not break it
                but I bet that 
                this line will break it.  

                Break break break.
            */
        ]]>
    </fx:Script>
    <s:VGroup>

        <s:Label text="Target:"/>
        <s:HGroup>
            <s:TextInput/>
            <s:Button label="..."/>
        </s:HGroup>

        <s:Label text="Action"/>
        <s:ComboBox/>

        <s:Label text="Address"/>
        <s:ComboBox/>

        <s:CheckBox label="Open in new window"/>

        <s:Label text="Parameters"/>
        <s:Label text="TODO: Insert AutoSizeTree Component here"/>
        <s:Button label="Edit (Change to image later)"/>

        <s:Label text="Animals"/>
        <s:ComboBox/>

    </s:VGroup>
</s:Group>
        /*
            This 
            is 
            going
            to 
            break
            it.
        */
        Model
     /        \
Viewer 1    Viewer 2
model.textInput.text = "";
var ti:TextInput = model.textInput;
ti.text = "";