1

個別の Blackberry アプリケーションで使用する共通クラスを作成しました。このクラスは別のプロジェクトではなく、共通の場所にあり、共通クラスのパスを Java Build Path にリンクしました。両方の BB アプリケーションに同じ共通パスを追加したところ、問題なくビルドおよびインストールされました。1 つのアプリケーションを実行すると実行が開始されますが、別のアプリケーションを実行すると、エラー メッセージ "class xxx multiple defined" エラーが表示されて終了します。

ここで何がうまくいかないのか考えてみてください。前もって感謝します

よろしく、ブラジ

4

3 に答える 3

2

BlackBerry は、他の Java プラットフォームとしては機能しません。BB Java では、2 つのクラスが異なるプロジェクトにある場合でも、同じ完全修飾名を持つことはできません。

機能させるには、そのうちの 1 つの名前を変更する (クラス名またはパッケージ名を変更する) 必要があります。

実際、この制限が見られた唯一のプラットフォームは 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 仮想マシンの 1 つのインスタンスの下で実行されます。したがって、特定の完全修飾名を持つクラスは 1 つだけ許可されます。同じ名前の別のクラスを追加すると、これらの両方のクラスの実行時にエラーが発生します。

RIM OS でサポートされているライブラリがありますが、非常に必要でない限り、プロジェクトでライブラリを使用することはお勧めしません。

これは、同じライブラリを使用する複数のアプリがあり、ライブラリのバージョンが異なる場合、質問で報告したのと同じエラーが発生する可能性があるためです。また、これらのライブラリを使用するアプリケーションが多数ある場合、ライブラリを管理するのは困難です。

ライブラリのソース コードを作業中のプロジェクトにコピーすることをお勧めします。そのライブラリに含まれるクラスのすべての完全修飾名を変更するには、リファクタリングを介してコピーします。

于 2012-09-18T09:15:31.257 に答える
0

返信ありがとうございます。共通ライブラリを作成し、そこに共通コードを入れました。これで、このライブラリをさまざまなアプリケーションで問題なく使用できます。ただし、BB デスクトップ マネージャーを使用してアプリケーションをインストールすると、ライブラリは最初のアプリケーションの一部として表示されますが、2 番目のアプリケーションには表示されません。これは、2 番目のアプリケーションがライブラリが既に含まれていることを認識しているため、再度含める必要がないためだと思います。

于 2012-09-18T14:45:53.117 に答える