Olá.
Sou novo em java e estou tentando executar um applet java em uma aplicação Delphi, através do JNI.
Eu já utilizei esse applet normalmente em uma página web, e ele precisa de um parametro: idCliente, que na página eu passo através da tag:
<param name="idCliente" value="XXXXXX">
Mas rodando esse applet no Delphi, com o JNI, eu não faço idéia de como passar esse parâmetro. Consegui carregar o applet com sucesso e localizei a classe e a função que desejo utilizar. A função tem o protótipo:
public String geraResumoDoCliente() {}
… o único problema é saber como passar o parâmetro pro applet. Se fosse um parâmetro de função seria moleza, mas como foi visto, a função que desejo utilizar não pede nada, obviamente ela obtém o idCliente internamente, através da função getParameter do java.
O código que utilizo pra iniciar a VM é o seguinte:
var
Options: array [0..10] of JavaVMOption;
VM_args: JavaVMInitArgs;
begin
FillChar(Options, SizeOf(Options), #0);
Options[0].optionString := PChar('-Djava.class.path=D:\Server\UClientes.jar');
VM_args.version := JNI_VERSION_1_2;
VM_args.options := @Options;
VM_args.nOptions := 1;
FJavaVM := TJavaVM.Create;
if FJavaVM.LoadVM(VM_args) = 0 then
begin
FJNIEnv := TJNIEnv.Create(FJavaVM.Env);
end;
end;
Funciona perfeitamente. Depois uso outro procedimento pra localizar a classe e a função que quero utilizar:
var
Cls: JClass;
Obj: JObject;
MID: JMethodID;
Resumo: JString;
begin
Obj := CreateJavaObject(FJNIEnv, 'utils/tools/ClientManager', Cls); // 'ClientManager' é a classe
if Obj <> nil then
begin
Mid := FJNIEnv.GetMethodID(Cls, 'geraResumoDoCliente', '()Ljava/lang/String;'); // 'geraResumoDoCliente' é a função
if Mid <> nil then
Resumo := FJNIEnv.CallObjectMethod(Obj, Mid, []);
end;
end;
Também funciona, mas a função não retorna nada por falta do parâmetro idCliente.
Alguma sugestão? :?