为不同的黑莓应用程序添加Common类

时间:2012-09-17 12:07:46

标签: java blackberry

我编写了一个通用类,我想在单独的Blackberry应用程序中使用它。这个类不在一个单独的项目中,而只是在一个公共位置,我已经在Java Build Path中链接了公共类的路径。我已经为我的两个BB应用程序添加了相同的通用路径,并且它们构建和安装没有任何问题。当我运行一个应用程序时,它开始运行但是当我运行另一个应用程序时,它会给出错误消息“class xxx multiply defined”错误并退出。

知道这里出了什么问题。提前致谢

此致 Braj

3 个答案:

答案 0 :(得分:2)

BlackBerry并不像其他Java平台那样工作。在BB Java中,您不能拥有两个具有相同完全限定名称的类,即使它们位于不同的项目中。

您必须重命名其中一个(更改类名或包名称)才能生效。

事实上,我见过这个限制的唯一平台是BB。这是一个真正的痛苦,因为你可以在不重命名的情况下在不同的项目中重用jar库。

更新:
这是关于这个主题的官方文章:
http://supportforums.blackberry.com/t5/Java-Development/Application-throws-quot-multiply-defined-quot-error-at-start-up/ta-p/501498

答案 1 :(得分:1)

RIM OS中的所有应用程序都在Java虚拟机的一个实例下运行。因此,只允许一个具有特定完全限定名称的类。添加另一个具有相同名称的类将导致在运行这两个类时失败。

RIM操作系统支持一个库,但我不建议在项目中使用库,除非非常必要。

这是因为如果您有多个具有相同库的应用程序,但具有不同版本的库,则可能会出现您在问题中报告的相同错误。当你有许多使用这些库的应用程序时,很难管理库。

我建议将库的源代码复制到您正在处理的项目中。通过重构进行复制,以更改该库中包含的所有类的完全限定名称。

答案 2 :(得分:0)

谢谢大家的回复。我已经创建了一个公共库并将公共代码放入其中。现在我可以在不同的应用程序中使用这个库而没有任何问题 但是,当我使用BB桌面管理器安装我的应用程序时,该库显示为第一个应用程序的一部分,但不在第二个应用程序中。我认为这是因为,第二个应用程序意识到库已经包含在内,因此不需要再次包含它。