現在、多くの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(strClass);
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