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が実行できる。
いつも参考にさせて頂いております。貴重な情報を公開して頂き感謝します。
Delphi 10.1 Berlin ですが、java2Op を実行すると、
Warning: error opening ReservedWordsOP.txt
Warning: error opening ReservedWordsC.txt
と、表示されます。
結果としては、空っぽ(1KB)に近いユニットが作成されます。
いろいろやってみるのですが、かなり疲れてきました・・・。
何かヒントがあれば教えて下さい。
手元の環境では、次のようなコマンドを実行すると、次のように表示されます。
> “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 オプションで指定したパスにファイルが作成されました。
山本さま、ありがとうございます。
Warning: error opening ReservedWordsOP.txt
Warning: error opening ReservedWordsC.txt
が出ても、大丈夫ということのようですね。
くじけずに頑張ってみます。
>手元の環境では、次のようなコマンドを実行すると、次のように表示されます。
….
>-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.
——————————————————————–
> Wi-fi の情報を取得したいのですが、
uses
Androidapi.JNI.Net, Androidapi.JNI.App;
を追加すると、取得できました。
ありがとうございました。