1

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

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

问候,布拉杰

4

3 回答 3

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

于 2012-09-17T13:38:39.950 回答
1

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

RIM OS 支持库的东西,但我不建议在您的项目中使用库,除非非常必要。

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

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

于 2012-09-18T09:15:31.257 回答
0

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

于 2012-09-18T14:45:53.117 回答