1

我收到了一个 VerifyError: Error #1014: Class spark.components::WindowedApplication 找不到。从我的 Ant 脚本运行我的 AIR 应用程序时出错。我的应用程序使用扩展桌面配置文件(用于 NativeProcess)。我正在使用 Flash SDK 4.6,我可以在 Flash Builder 4.6 中编译、运行和打包项目。我希望能够使用 Ant 脚本来完成所有这些事情。

我和这个问题有同样的问题: Compiling AIR application with Ant Task (WindowedApplication could not be found)

我的应用程序使用 ant 脚本编译,但是当我尝试运行它时。我收到此错误,然后是一堆未找到的错误。

VerifyError:错误 #1014:找不到类 spark.components::WindowedApplication。

在 flash.display::MovieClip/nextFrame() 在 mx.managers::SystemManager/deferredNextFrame()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\SystemManager.as:278]在 mx.managers::SystemManager/preloader_preloaderDocFrameReadyHandler()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\SystemManager.as:2627] 在 flash.events::EventDispatcher/dispatchEventFunction()在 flash.events::EventDispatcher/dispatchEvent() 在 mx.preloaders::Preloader/timerHandler()[E:\dev\4.y\frameworks\projects\framework\src\mx\preloaders\Preloader.as:515]在 flash.utils::Timer/_timerDispatch() 在 flash.utils::Timer/tick()

其他一些错误:

VerifyError:错误 #1014:找不到类 IFlexAsset。VerifyError:错误 #1014:找不到类 mx.core::FontAsset。VerifyError:错误 #1014:找不到类 mx.core::SpriteAsset。VerifyError:错误 #1014:找不到类 mx.core::BitmapAsset。

这是我的ant脚本的编译目标

<target name="compile" depends="init">
  <mxmlc file="${MAIN_SOURCE_FILE}" 
        output="${DEBUG_DIR}/${APP_NAME}.swf"
        services="${APP_ROOT}/services/flex/services-config.xml" 
        configname="air"
        actionscript-file-encoding="UTF-8" fork="true">
    <locale>en_US</locale>
    <static-link-runtime-shared-libraries>true</static-link-runtime-shared-libraries>

    <load-config filename="${FLEX_HOME}/frameworks/air-config.xml"/>
    <source-path path-element="${APP_ROOT}/src"/>
    <source-path path-element="${FLEX_HOME}/frameworks"/>
    <source-path path-element="${APP_ROOT}/../MyLib/src"/>

    <compiler.external-library-path dir="${FLEX_HOME}/frameworks" append="true">
        <include name="libs/air" />
        </compiler.external-library-path>

    <compiler.library-path dir="${FLEX_HOME}/frameworks" append="true">
                    <include name="libs" />
            <include name="libs/mx" />
            <include name="libs/air" />
                    <include name="locale/{locale}" />
                </compiler.library-path>
    <compiler.library-path dir="${APP_ROOT}" append="true">
                    <include name="libs" />
                    <include name="libs/player" />
                </compiler.library-path> 
    <define name="CONFIG::debugging" value="false"/>

     <compiler.debug>true</compiler.debug>             
  </mxmlc>
  <copy filtering="true" file="${APP_DESCRIPTOR}" tofile="${APP_DEBUG_DESCRIPTOR}" />
        <replace file="${APP_DEBUG_DESCRIPTOR}">
            <replacefilter token="[This value will be overwritten by Flash Builder in the output app.xml]" value="${APP_NAME}.swf"/>
        </replace>
</target>

这是我的 ant 脚本的运行目标

<target name="test" depends="compile">
    <exec executable="${ADL}">
        <arg value="${APP_DEBUG_DESCRIPTOR}"/>
    </exec> 
</target>

我还尝试使用 ADT 将项目打包为 .dmg 并安装它。它会安装,但在我运行已安装的版本时会立即退出。这是我的 ant 脚本中的包目标。

<target name="package" >
    <java jar="${ADT.JAR}" fork="true" failonerror="true">
        <arg value="-package"/>
        <arg value="-storetype"/>
        <arg value="${STORETYPE}"/>
        <arg value="-keystore"/>
        <arg value="${KEYSTORE}"/>
        <arg value="-storepass"/>
        <arg value="${KEYSTORE_PASS}"/>
        <!-- Target -->
        <arg value="-target"/>
        <arg value="native"/>
        <!-- Output -->
        <arg value="${PACKAGE_NAME}"/>
        <!-- App XML -->
        <arg value="${APP_DEBUG_DESCRIPTOR}"/>
        <!-- Include all files from the bin directory -->
        <arg value="-C"/>
        <arg value="${DEBUG_DIR}"/>
        <arg value="${APP_NAME}.swf"/>
        <arg value="-C"/>
        <arg value="src"/>
        <arg value="images"/>
        <arg value="-C"/>
        <arg value="src"/>
        <arg value="process"/>
        <arg value="-C"/>
        <arg value="src"/>
        <arg value="assets"/>
        <arg value="-C"/>
        <arg value="src"/>
        <arg value="styles"/>
    </java>
    <echo message="Finished packaging ${PACKAGE_NAME}"/>
</target>
4

2 回答 2

1

我将 external-library-path 更改为仅包含 airglobal.swc,这让我克服了这个错误。

<compiler.external-library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
   <include name="airglobal.swc" />
</compiler.external-library-path>

我认为将整个 air 文件夹包含为外部库会导致链接中省略一堆 .swc。

于 2012-08-16T21:14:52.213 回答
0

我在 FlashDevelop 中遇到了类似的问题,其中应用程序构建正常,但在运行时出现“错误 1014:找不到火花组件应用程序”。

您关于更改外部库路径的回答帮助我查明了问题。基本上,我从 Project options -> tab Compiler Options 中删除了路径,只剩下:

Intrinsic Libraries: Library\AS3\frameworks\Flex4

在 SWC 库中,我留下了正在使用的任何其他第三方库。还有一个 FLVPlayback.swc(在 Flash CS 中编译),用于在 AS3 代码中使用 FLVPlayback。通过这种方式,我可以在正常的 AS3 应用程序中使用这个 Flex/Spark 组件。

于 2013-12-12T17:43:45.700 回答