小弟在使用JNI调用JAVA的CLASS的时候,循环自己的话,程序会莫名奇妙的死掉?是什么资源没释放吗?
源代码如下:
iniJVM();
tempParam := '(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;'
+'Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;'
+'Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;';
MID := TENV.GetStaticMethodID(CID, 'sendMessage',PChar(tempParam));
if (TENV.ExceptionOccurred<>nil) then
begin
LogWrite('ErrInfo:找不到方法!');
//Continue;
end;
TMP := TENV.StringToJString(PChar(UTF8Encode(tempQuery.FieldByName('MESSAGE_CONTENT').AsString)));
TMP := TENV.CallStaticObjectMethod(CID, MID, [SGIP_GATEWAY_ADDRESS,SGIP_GATEWAY_PORT,SGIP_GATEWAY_USERNAME,SGIP_GATEWAY_PASSWORD,
G_SHORT_NUMBER,SGIP_CHARGE_NUMBER,
tempQuery.FieldByName('MOBILE_NUMBER').AsString,TMP]);
if (TENV.ExceptionOccurred()<>nil) then
begin
LogWrite('ErrInfo:调用方法失败!');
//Continue;
end;
源代码如下:
iniJVM();
tempParam := '(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;'
+'Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;'
+'Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;';
MID := TENV.GetStaticMethodID(CID, 'sendMessage',PChar(tempParam));
if (TENV.ExceptionOccurred<>nil) then
begin
LogWrite('ErrInfo:找不到方法!');
//Continue;
end;
TMP := TENV.StringToJString(PChar(UTF8Encode(tempQuery.FieldByName('MESSAGE_CONTENT').AsString)));
TMP := TENV.CallStaticObjectMethod(CID, MID, [SGIP_GATEWAY_ADDRESS,SGIP_GATEWAY_PORT,SGIP_GATEWAY_USERNAME,SGIP_GATEWAY_PASSWORD,
G_SHORT_NUMBER,SGIP_CHARGE_NUMBER,
tempQuery.FieldByName('MOBILE_NUMBER').AsString,TMP]);
if (TENV.ExceptionOccurred()<>nil) then
begin
LogWrite('ErrInfo:调用方法失败!');
//Continue;
end;
delphi调用的java的类,该类是独立的,比如
public class DelphiCallJava {
public static String dTest(String args) {
if (args == null) {
return "您没有输入参数!";
} else {
return "您输入的参数:" + args;
}
}
生成一个类A;==================
但是,当在A类中调用了B类的方法时,再通过delphi调用A类中的方法,能找到类,能找到方法,可调用方法时报错了;请问有没有大侠遇到过这种情况?该例子,在[email protected] 密码:delphi 里《delphi调用java类,包》,请高手看一下
我也在用jni调用java类,跟你请教个问题吧?
java中定义 public static boolean fnCheckKey(String AsKey, String AsYZM)delphi 中
function Java_com_ecdb_core_util_ECThree_fnCheckKey(PEnv: PJNIEnv; Obj: JObject; AsKey, AsYZM: JString): JBoolean;