解决 Flash Builder 中的包名称冲突

Posted

技术标签:

【中文标题】解决 Flash Builder 中的包名称冲突【英文标题】:Resolve conflicting package name in Flash Builder 【发布时间】:2011-05-28 02:43:57 【问题描述】:

我正在使用 Flash Builder 4 并且需要一个与提示点一起使用的 VideoDisplay 组件。 Flex 的 VideoDisplay 所基于的OSMF 类的较新版本已经处理了这个问题。这个想法是推出我自己的 VideoDisplay 组件,而不是猴子修补现有的组件。为此,我创建了一个带有较新版本的 OSMF 类的项目,以及另一个用于构建新 VideoDisplay 的项目,它们的包名称分别为。

问题在于,由于 Flex 4.1 SDK 包含带有原始包名的大部分 OSMF 类,因此 import org.osmf.media.MediaPlayer; 之类的语句引用位于

的类

C:\Program Files\Adobe\Adobe Flash 建造者 4\sdks\4.1.0\frameworks\projects

而不是较新版本的 OSMF 中的 MediaPlayer 类。

我尝试重命名 OSMF 项目中的包,以便明确命名,但我从 IDE 收到异常(前提条件检查期间发生意外异常。有关详细信息,请参阅错误日志)。

SDK 总是(正确地?)在战斗中获胜吗?是否有一些(肮脏的?)方法可以强制项目更喜欢对 swc/项目的引用而不是同名的 SDK 类?

欢迎提出任何建议。

编辑:鉴于 cmets,我显然在解释我的问题方面做得很差。所以又来了。

Flex 为其 VideoPlayer 使用了 OSMF 平台的旧版本、功能较弱的版本。我需要使用包含提示点支持的新版本。我已经下载了更新的 OSMF 源代码,它在它自己的项目中。为了将来的可维护性,我宁愿不必重命名此项目中的包。

我将实现的 VideoPlayer 位于第二个项目中,该项目不会与 Flex SDK 或 OSMF 的包名重复。冲突发生在 Flex SDK 和 OSMF 之间,而不是我要构建的类与 OSFM 或 SDK 之间。我的项目需要访问 OSMF 项目中的类,而不是来自 Flex SDK 的具有包/类名称的类。由于 Flex SDK 基于 OSMF,Flex 将包和命名空间标识保持不变,因此命名不明确。

【问题讨论】:

如果您为自己的类提供与 OSMF 类相同的包和名称,那么您的自定义类应该在您的项目中优先。我很惊讶你说他们不是。 【参考方案1】:

为什么不把自己的视频组件放在自己独特的包下(反向域名)。在很多方面会更好。它将您区分为该软件包的作者并减少冲突。

【讨论】:

正是我正在尝试的。问题是除非我想重新创建整个 OSMF 库,否则我需要引用它而不是 SDK 中的 OSMF 类。引用 OSMF 的视频组件将位于单独的包中。冲突发生在新版本的 OSMF 和 Flex SDK 使用的旧版本之间。他们 80% 相等。 +1 @Laramie 根据您的问题文本,您正在尝试与此答案建议的完全相反的方法。听起来您正在尝试将自己的类命名为框架类的确切名称/包。我不会尝试在框架 SWC 中重命名 OSMF 包。 我提到了“引用它”,而不是“复制它”。我试图在我原来的问题中更清楚地解释。不过感谢您的反馈。【参考方案2】:

在“Flex Build Path”中从 Flex 4.1 SDK 中删除 OSMF。

【讨论】:

实际上我也有同样的问题,但是当我从 Flex 构建路径中删除 OSMF 时,无论我添加什么作为 osmf.swc 替换,项目都不会编译(编译前抛出错误,没有信息)

以上是关于解决 Flash Builder 中的包名称冲突的主要内容,如果未能解决你的问题,请参考以下文章

如何避免 Java 中的类和包之间的名称冲突?

如何使用标准库包名称解决 Python 包中的命名空间冲突?

如何解决包冲突问题

如何解决包冲突问题

如何解决包冲突问题

在python程序编写过程中,如何解决模块名称冲突?