転送:Delphi 10.3でJNIを介してJava関数を呼び出す

現在、多くのSDKがJAVAインターフェースを提供しています。ただし、Delphiインターフェイスはありません。

曲線で国を救う方法はありません。Delphi 10.3では、JNIを介してJava関数を呼び出すことができます。

ステップ1:Java仮想マシンとオペレーティング環境を作成する

プロシージャTForm1.FormCreate(Sender:TObject);
var
Options:JavaVMOptionの配列[0 .. 4];
VM_args:JavaVMInitArgs;
ErrCode:整数;
begin
{创Java虚拟机}
FJavaVM:= TJavaVM.Create(JNI_VERSION_1_8);を開始します。
オプション[0] .optionString:= PAnsiChar(AnsiString( '-Djava.class.path =' + ExtractFilePath(ParamStr(0))+ 'classes'));
VM_args.version:= JNI_VERSION_1_8;
VM_args.Options:= @Options;
VM_args.nOptions:= 1;
VM_args.ignoreUnrecognized:= True;
ErrCode:= FJavaVM.LoadVM(VM_args);
ErrCode <0の場合
は、
MessageBox(Handle、 'Create Java VM Error'、 'Delphi 10.3调用Java Class'、MB_OK OR MB_ICONERROR);を開始します。
停止;
出口;
end;

{Java仮想マシンオペレーティング環境の作成}
FJavaEnv:= TJNIEnv.Create(FJavaVM.Env);
FJavaEnv = nilの場合、メッセージボックス
開始
(ハンドル、「Java Envエラーの作成」、「Delphi 10.3 Javaクラスの呼び出し」、MB_OKまたはMB_ICONERROR );
終了、
終了、
終了、
ステップ2:Java関数の実行 

プロシージャTForm1.btn1Click(Sender:TObject);
var
jcls:JClass;
strClass :UTF8String; strMetod:UTF8String;
strSign:
UTF8String;
strArg、strResult:string;
begin
{query Java class name}
strClass:= 'com / test / javafordelphi / JavaClassForDelphiTest ';
jcls:= FJavaEnv.FindClass(s​​trClass);
jcls = nilの場合

StartShow(' cant find java class ');
Exit;
end;

{Java関数名、パラメータータイプ、パラメーター}
strMetod:=' goTest '; //関数名
strSign:= 'String(String)'; //パラメータタイプ、戻り値タイプ
strArg:= '123'; //入力パラメータ

{execute Java function}
strResult:= CallMethod(FJavaEnv、jcls、strMetod、strSign 、[strArg]、True);
strResult IF <> ''を
開始し
、メッセージボックス(ハンドル、PChar型(フォーマット( 'JavaClassForDelphiTest.goTest結果:S%'、[strResult]))、 'Javaの'、OR MB_OK MB_ICONINFORMATIONを呼び出すDelphiのクラス10.3);
END;
END;
最初の3つのステップ:仮想マシンを破棄する

プロシージャTForm1.FormDestroy(Sender:TObject);
開始
FJavaEnv.Free;
FJavaVM.DestroyJavaVM;
FJavaVM.Free;
終了;
JNI、JNIUtilsユニット参照を追加します。

2つのメンバー変数を追加します。

  プライベート
    FJavaVM:TJavaVM;
    FJavaEnv:TJNIEnv;
 

コンパイルして渡します。

 

急がないでください。まず、JAVAがインストールされているかどうか、およびシステム検索パスにJavaのパスが含まれているかどうかを確認します。

デフォルトは(x86)です。

C:\ Program Files(x86)\ Java \ jdk1.8.0_202 \ bin

C:\ Program Files(x86)\ Java \ jdk1.8.0_202 \ jre \ bin \ server

そうでない場合は、それらをWindowsシステムの検索パス(環境変数:パス)に追加します。

実行します。
————————————————
著作権に関する声明:この記事はCSDNブロガー "dbyoung"によるオリジナルの記事であり、CC 4.0 BY-SAの著作権契約に従っています。元のソースリンクとこの声明を添付して転載してください。
元のリンク:https://blog.csdn.net/dbyoung/java/article/details/89085406

おすすめ

転載: www.cnblogs.com/timba1322/p/12678555.html