QT学习调用JAR的问题

牧牛童子 2017-08-05 12:18:42
初学,照搬网上示例。
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代表什么?
谢谢。
...全文
931 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
牧牛童子 2017-08-11
  • 打赏
  • 举报
回复
几天了,没人来回复,我自己来回复吧。 http://bbs.csdn.net/topics/392209375
牧牛童子 2017-08-05
  • 打赏
  • 举报
回复
Java方法签名中特殊字符/字母含义 特殊字符 数据类型 特殊说明 V void 一般用于表示方法的返回值 Z boolean B byte C char S short I int J long F float D double [ 数组 以[开头,配合其他的特殊字符,表示对应数据类型的数组,几个[表示几维数组 L全类名; 引用类型 以L开头、;结尾,中间是引用类型的全类名

16,815

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧