3

私が達成しようとしていることは信じられないほど単純なことのように思えますが、信じられないほど苦痛になっています。

BlackBerry Application プロジェクトである ProjectA があります。Java ライブラリ プロジェクトである ProjectB があります。ProjectAからProjectBを参照したい。参照を追加できますが、ProjectA を実行すると機能しません。両方のプロジェクトのソース コードがあり、どちらも Java コンパイラ 1.4 を使用してコンパイルされています。

複数のことを試しましたが、何らかの理由ですべてが失敗します:

1. ProjectB の pre-verify.exe 「JAR ファイルの作成がエラー -1 で失敗しました」というエラーで失敗します cod ファイルと jar ファイルが作成されていることがわかりますが、jar ファイルを ProjectA に追加して実行すると、動作しません。.cod ファイルを追加する必要があるかどうかわかりません。

2. 新しい BlackBerry Library プロジェクトを作成し、ProjectA で参照 する 新しいプロジェクト ProjectC を作成し、ProjectB の jar をそれに追加します。次に、ProjectA に ProjectC への参照を追加します。しかし、ProjectB からクラスをインポートできません

Plsは方法を提案します。私は Eclipse プラグインを使用しており、Eclipse のビルド機能に依存しています

4

2 に答える 2

7

自分で答えを見つけました。誰かがこれに出くわした場合に備えて、ここで公開します。手順は次のとおりです。

  1. ライブラリを作成し、JAR としてエクスポートします (またはサードパーティの JAR をダウンロードします)。
  2. JAR で preverify.exe を実行します。

    preverify.exe -verbose -classpath "C:/Program Files/Research In Motion/BlackBerry JDE 5.0.0/lib/net_rim_api.jar" jarname.jar

  3. 運が良ければ、問題が発生することはなく、完了します。しかし、私は十分に幸運ではありませんでした。以下のエラーが発生しました

エラー: そのようなファイルまたはディレクトリはありません。JAR ファイルの作成がエラー -1 で失敗しました

これには 2 つの原因が考えられます。

  • jar.exe は PATH に追加されません。その場合は、それ (JAVA インストール ディレクトリにあります) を PATH に追加します。
  • jar.exe の cvfm または -cfm オプションが実行に失敗します。理由はわかりませんが、これを修正する方法は、-cf オプションを使用し、.class ファイルを指定しますが、マニフェスト ファイルは使用しないことです。以下に
    例を示します。

    "C:\Program Files\Java\jdk1.6.0_26\bin\jar.exe" -cf "output\json-1.0.jar" tmp12996/

tmp12996 には、検証済みの .class ファイルが含まれています。上記以外の問題が発生する可能性があります。

  1. 上記の手順で jar が作成されたら、その構造が予想どおりであることを確認します。チェックする 1 つの方法は、.jar の名前を .zip に変更し、解凍してからチェックすることです。必要としない場合は、構造を変更してから再パックできます (ただし、大きな変更は行いません)。

  2. 次に、この新しくビルドされた jar を参照として BlackBerry アプリケーションに追加します。つまり、Eclipse の Java ビルド パスに追加し、[注文とエクスポート] ウィンドウで確認します。

  3. それでおしまい!準備できた!あなたのアプリを実行してください!

シミュレーターで実行しようとすると、モジュールに検証エラーが含まれていることを示すエラーが表示される場合があります。この問題の考えられる原因の 1 つは、ライブラリ (元の JAR) に J2ME または BB JRE と互換性のない API が含まれていることです。ライブラリは Java 1.4 (またはバージョンが何であれ) に対してコンパイルされているため、ライブラリを個別にビルドしてもコンパイラ エラーが発生しない場合があります。問題を解決する最善の方法は、すべてのコードを BB アプリ プロジェクトに移動してからビルドすることです。これにより、すべての問題が事前にわかります。必要に応じて変更を加えてから、コードをライブラリに戻します。使用しているライブラリ (サード パーティのライブラリなど) のソース コードがない場合は、うまくいかない可能性があります。また、私が見つけて解決したもの以外にも問題がある可能性があることを覚えておいてください。

これをすべて理解するのに非常に長い時間がかかったので、これを詳細に文書化しています。控えめに言っても、最も苛立たしいことでした!

于 2012-02-02T10:53:42.783 に答える
1

別の解決策を見つけました。JAR ファイルの事前検証中にエラー -1 が発生した場合は、ライブラリ アプリケーションを 1 回だけ実行してください。アプリケーションを実行しないと、成果物フォルダーが空になるためです。このフォルダが空でないことを確認してください。

于 2012-06-01T06:22:55.590 に答える