- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图从 Java 获取一个字符串数组,并在我的 Qt Android C++ 中使用它(最终在我的 QML 代码中),但出现以下运行时错误(即崩溃):
W System.err: java.lang.NoSuchMethodError: no static method
"Lcom/test/myTest/JniTest;.getSSIDList(V)[Ljava/lang/String;"
Java代码如下:
package com.test.myTest;
import java.util.ArrayList;
import java.util.List;
public class JniTest
{
public static int fibonacci(int n)
{
if(n<0)
return -1;
else if(n==0 || n==1)
return n;
return fibonacci(n-1)+fibonacci(n-2);
}
public static String[] getSSIDList()
{
List<String> ssidList = new ArrayList<String>();
ssidList.add("string 1");
ssidList.add("string 2");
String[] strings = new String[ssidList.size()];
strings = ssidList.toArray(strings);//now strings is the resulting array
return strings;
}
}
C++ 代码是:
void AndroidInterface::test()
{
//qDebug() << fibonacci(4); //this works
qDebug() << getSSIDList(); //this crashes with the error above
}
int AndroidInterface::fibonacci(int n)
{
return QAndroidJniObject::callStaticMethod<jint>("com/test/myTest/JniTest"
, "fibonacci"
, "(I)I"
, n);
}
QStringList AndroidInterface::getSSIDList()
{
QAndroidJniObject stringArray = QAndroidJniObject::callStaticObjectMethod("com/test/myTest/JniTest"
, "getSSIDList"
, "(V)[Ljava/lang/String;");
jobjectArray objectArray = stringArray.object<jobjectArray>();
QAndroidJniEnvironment qjniEnv;
const int n = qjniEnv->GetArrayLength(objectArray);
qDebug() << "Got jobjectArray of length:" << n; // correct
for (int i = 0; i < n; ++i)
{
qDebug() << "Iteration:" << i;
jobject element = qjniEnv->GetObjectArrayElement(objectArray, i);
qDebug() << "Got jobject of type:" << qjniEnv->GetObjectClass(element);
// ...
qjniEnv->DeleteLocalRef(element);
}
QStringList list;
return list;
}
当前实现getSSIDList()
只有一个测试假人 body 。
我在 QML 中有一个按钮,可以调用 AndroidInterface::test()
上面的代码,适用于 fibonacci()
方法,但崩溃 getSSIDList()
方法与上述错误。
我做错了什么?感谢您的帮助!
最佳答案
嗯,您没有为 native 方法提供正确的 JNI 签名。我们在 (V)[Ljava/lang/String;
中不需要 V
,但在 ([Ljava/lang/String;)V
.
手动为朴素方法构建正确的 C/C++ 签名是可能的,但很棘手,但幸运的是,您不需要这样做。
Android Studio 会在这方面为您提供帮助。
如果您的 IDE 中没有内置此功能,请使用 javah 实用程序从 Java 类中提取 header 。即使您实际上使用 Kotlin 或其他一些 JVM 兼容语言,这也有效。
请注意,javah 工具计划在下一个主要 JDK 版本中删除。该工具已被 JDK 8 中 javac 添加的 '-h'
选项取代。
关于java - Qt for Android JNI : java. lang.NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50172819/
我正在用来自JSON文件的一些数据填充Flutter中的列表。 但是,我的代码不断抛出异常"NoSuchMethodError (NoSuchMethodError: The method 'add'
通过eclipse运行Tomcat 7报错是: javax.servlet.ServletException: java.lang.NoSuchMethodError: org.eclipse.jdt
这是我的错误行: 这是我的代码: 最佳答案 final jobs= json.decode(response.body)['name_database_table']; 关于mobile - NoSu
很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。为了帮助澄清这个问题以便可以重新打开它,visit the help center
我已经被这个错误困扰了几个小时。。我的pom.xml。应用程序未启动。所有的Spring框架依赖于相同的版本,但仍然得到相同的错误。。更新。MVN依赖的结果:树。看起来这里一切都很好。
我得到: NoSuchMethodError: com.foo.SomeService.doSmth()Z 我是否正确理解这个'Z'意味着doSmth()方法的返回类型是 boolean 值?如果为
我在 Speed 类中引用 PlayerUtil.getMovementSpeed(player);,在我的 PlayerUtil 类中,我将方法定义为: public static double g
我得到: NoSuchMethodError: com.foo.SomeService.doSmth()Z 我是否正确理解这个 'Z' 意味着 doSmth() 方法的返回类型是 boolean 值?
我在使用 Spark 和 Scala 时遇到了一个奇怪的错误。我有一段代码声明了一个变量: var offset = 0 这会导致以下异常: java.lang.NoSuchMethodError:
我已经成功实现了 reflectionEquals 方法,其中包含一个排除字段列表。 return EqualsBuilder.reflectionEquals(this, obj, new Str
我正在使用 Spring 框架和 Maven 开发 Java Enterprise 应用程序。我正在为此学习一门类(class),并且一直坚持集成 Hibernate JPA。当我运行项目时,它返回以
I/flutter ( 8282): The following NoSuchMethodError was thrown building Meme(dirty, state: _MemeState
运行以下代码时出现 NoSuchMethodError - 我想从 JSON url 打印出轨道标题 - 我错过了什么吗? import 'dart:async'; import 'dart:conv
我正在做 Searchview flutter 中的例子 https://github.com/MageshPandian20/Flutter-SearchView 但我想对 进行更改子项类有一个 最
尝试从Eclipse中的简单Java程序连接到Hive时出现以下错误。看起来好像连接,然后引发此错误。我可以通过beeline在本地连接到Hive Thrift服务器,而不会出现问题。 两个libth
当我向安全资源发出请求时,会发生NoSuchMethodError。 基于基于Spring Boot 1.4.4的Grails 3.2.5的项目 AppConfig: @EnableWebSecuri
这个问题已经有答案了: Differences between Exception and Error (11 个回答) 已关闭 7 年前。 我的印象是 Exception 非常适合捕获所有可能的异常
祝大家有美好的一天!我使用 google Vision API,当我在 IntelliJ Idea 中运行我的程序时,它工作得很好,但是当我编译 jar 文件时,它在处理照片时给出错误 java.la
我一直在为这个问题苦苦挣扎。我正在开发一个包含很多包的 netbeans java 项目,起初我更改了 gui,但是当我运行代码时,它没有反射(reflect)任何更改,即使我在保存、清理、清理和编译
我一直在寻找问题的解决方案,但没有得到足够的答案。 我正在开发 Bukkit插件的更新系统。因此,我必须自己编写这些类的代码。但我一直想从 debug(String) 调用一个方法(具体来说: ano
我是一名优秀的程序员,十分优秀!