【问题标题】:FlashBuilder Flex project, nested .swcs cause 'multiply defined' conflictsFlashBuilder Flex 项目,嵌套的 .swcs 导致“多重定义”冲突
【发布时间】:2012-03-28 10:36:25
【问题描述】:

我有一些 flex/AS3 代码(来自第 3 方),我必须对其进行修改以满足我的需要。由于我的预算,我只能使用 FlashDevelop - 这意味着第 3 方不愿意提供太多支持(他们使用了 FlashBuilder)

该解决方案由大约 10 个“子”项目组成,其中大部分使用其库中的 spark.swc 和 spark_rb.swc

这 10 个项目使用 Export SWC 插件编译成 .swc。每个“子”项目都编译成功。

然后我在主项目中使用这些 .swc 文件。

我已经尝试了将 spark.swc 和 spark_rb.swc 添加到“子”项目库(“包含引用的类”、“完全包含”、“不包含”)的每种组合以及添加“sub” .swcs 到 main - 在构建类似于以下内容的主项目时,我仍然会遇到编译错误:

Error: Symbol 'en_US$components_properties' is multiply defined in
C:\flex_sdk_4.1.0.16076A\frameworks\locale\en_US\spark_rb.swc$locale/en_US/components.properties 
and C:\Path\To\Folder\SubProject1.swc(en_US$components_properties)

我没有在主项目的库中包含 spark.swc 或 spark_rb.swc。

我应该如何使用共享 .swc 代码的 .swc 文件?或者 - 我问错了问题,应该做一些不同的事情吗?

【问题讨论】:

  • spark_rb.swc 默认已经包含在您的 SDK 中,为什么还要在您的库项目中再次包含它?
  • 不包括它意味着我收到多个错误,例如:C:\Path\To\folder\src\com\blah\uilogger\components\LoggingSkinnableComponent.as(9): col: 49 Error: The definition of base class SkinnableComponent was not found. (LoggingSkinnableComponent extends SkinnableComponent)

标签: actionscript-3 apache-flex


【解决方案1】:

该设置没问题,您需要做的是避免在导出时将其他库中已包含的类编译到您的库中。

我不知道如何在 FlashDevelop 的 Export SWC 中执行此操作,但在 Ant 中这很容易(如果您愿意,甚至可以使用命令行):

  1. 在编译时生成链接报告 (-link-report=report.xml) 您的应用:它将包含有关在您的主 SFW 中编译的内容的信息。
  2. -load-externs=report.xml编译所有子项目:这样 已包含在主 SFW 中的类将不会被编译 子导出文件。

您可以在此处阅读更多信息: http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7d1f.html#WS2db454920e96a9e51e63e3d11c0bf64277-7ffa

希望对您有所帮助。

【讨论】:

  • 我已经放弃了那个结构并从头开始重新开始......只是没有工作。您对排除类的建议很好——确实有一种方法可以在 FlashDevelop 中使用 .as 文件执行此操作——但不适用于 .swc 中包含的类
  • 正如我告诉你的,你在编译 SWC 时排除了这些类,所以一开始就根本不包括它们。
猜你喜欢
  • 2015-12-16
  • 1970-01-01
  • 1970-01-01
  • 2014-01-23
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多