Java2OPで「Generic Type not defined」のエラーが発生したら

Java2OPで「Generic Type not defined」のエラーが発生したら、JDK 1.8を使っていたらJDK 1.7を使用する。

JDK 1.7はこちらのページからダウンロードできる。

Java2OPを使う前にパスにJDK 1.7を追加して、JDK1.7が利用されるようにする。

SET PATH=C:\Program Files\Java\jdk1.7.0_80\bin;%PATH%

使用されるJavaのバージョンが変更されたか確認する

>java -version
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b18, mixed mode)

>SET PATH=C:\Program Files\Java\jdk1.7.0_80\bin;%PATH%

>java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

これで、Java2OPが実行できる。

コメント

  1. いつも参考にさせて頂いております。貴重な情報を公開して頂き感謝します。

    Delphi 10.1 Berlin ですが、java2Op を実行すると、
    Warning: error opening ReservedWordsOP.txt
    Warning: error opening ReservedWordsC.txt
    と、表示されます。
    結果としては、空っぽ(1KB)に近いユニットが作成されます。

    いろいろやってみるのですが、かなり疲れてきました・・・。
    何かヒントがあれば教えて下さい。

  2. 手元の環境では、次のようなコマンドを実行すると、次のように表示されます。

    > “C:\Program Files (x86)\Embarcadero\Studio\18.0\bin\converters\java2op\Java2OP.exe” -classes android.net.ConnectivityManager android.location.* -unit C:\tmp\Android.JNI.UnitName
    Warning: error opening ReservedWordsOP.txt
    Warning: error opening ReservedWordsC.txt
    Parsing xml: C:\Program Files (x86)\Embarcadero\Studio\18.0\bin\converters\java2op\bootclasses.xml

    -unit オプションで指定したパスにファイルが作成されました。

  3. 山本さま、ありがとうございます。

    Warning: error opening ReservedWordsOP.txt
    Warning: error opening ReservedWordsC.txt
    が出ても、大丈夫ということのようですね。

    くじけずに頑張ってみます。

  4. >手元の環境では、次のようなコマンドを実行すると、次のように表示されます。
    ….
    >-unit オプションで指定したパスにファイルが作成されました。

    確かに、作成されました。

    Wi-fi の情報を取得したいのですが、
    Java2OP.exe -classes android.net.wifi.WifiManager -unit Androidapi.JNI.WifiManager
    を実行した時に、作成されるファイルは、次のようなファイルです。
    これは、正しいのでしょうか?
    —————————————————-
    unit Androidapi.JNI.WifiManager;

    interface

    uses
    Androidapi.JNIBridge;

    type
    // ===== Forward declarations =====

    //JStringBuffer = interface;//java.lang.StringBuffer
    //JStringBuilder = interface;//java.lang.StringBuilder

    // ===== Interface declarations =====

    // java.lang.StringBuffer
    // java.lang.StringBuilder
    implementation

    procedure RegisterTypes;
    begin
    //TRegTypes.RegisterType(‘Androidapi.JNI.WifiManager.JStringBuffer’, TypeInfo(Androidapi.JNI.WifiManager.JStringBuffer));
    //TRegTypes.RegisterType(‘Androidapi.JNI.WifiManager.JStringBuilder’, TypeInfo(Androidapi.JNI.WifiManager.JStringBuilder));
    end;

    initialization
    RegisterTypes;
    end.
    ——————————————————————–

  5. > Wi-fi の情報を取得したいのですが、

    uses
    Androidapi.JNI.Net, Androidapi.JNI.App;
    を追加すると、取得できました。

    ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください