消息关闭
    暂无新消息!

QT学习调用JAR的问题

问题作者 : 大树2017-08-05发布
初学,照搬网上示例。
test.java文件内容如下:
package test;
import java.io.PrintStream;

public class Test
{
public Test(int i)
{
System.out.println("Test实例化了!");
}

public static int fun1()
{
System.out.println("静态函数fun1执行了。");
return 11;
}
}

用jar cvf   test.jar   test.java   生成jar包。置于android\libs目录下。构建时也看到加载了test.jar的构建信息输出。

QT代码:
        jint a = 2;
        jint b = 4;
        jint max=0;
        max = QAndroidJniObject::callStaticMethod<jint>("java/lang/Math", "max", "(II)I", a, b);    //系统标准函数,调用成功。
        max = QAndroidJniObject::callStaticMethod<jint>("test/Test","fun1");    //调用失败。若正确,应该返回 11才对。

        QString msg01=QString::fromStdString(int2string(max));
        QMessageBox::information(NULL,"a+b=?",msg01);

问题1:自己的java测试类,如何写才是正确的,方能调用成功?我的错误在哪里?
问题2:QAndroidJniObject::callStaticMethod<jint>("java/lang/Math", "max", "(II)I", a, b);   中的  "(II)I"  代表什么意思?输入参数两个且为整型? 若输入参数再加一个string型,是不是应该是"(IIC)I"?  (看网上说,整型用“I”标记。 )
问题3:QAndroidJniObject jartestObj("test/Test","(I)V",10);  见网上示例代码是这么写的,请问"(I)V"中的V代表什么?
谢谢。

1个回答

︿ 3
Java方法签名中特殊字符/字母含义
特殊字符 数据类型 特殊说明
V void  一般用于表示方法的返回值
Z boolean  
B byte  
C char  
S short  
I int  
J long  
F float  
D double  
[ 数组 以[开头,配合其他的特殊字符,表示对应数据类型的数组,几个[表示几维数组
L全类名; 引用类型 以L开头、;结尾,中间是引用类型的全类名