当前位置: 首页 > 知识库问答 >
问题:

JNIEnv FindClass()找不到属于Xamarin Android绑定库的包/类

鲁华茂
2023-03-14

我试图通过JNI从C++调用Kotlin函数。

我用这行代码调用FindClass():

 jclass classObj = m_env->FindClass("de/companyname/packagename/MyKotlinClass");

m_env是指向JNI环境的有效指针(例如,我可以成功地找到标准Java库类)。上面的代码行失败

java.lang.ClassNotFoundException:在路径上找不到类“DE/CompanyName/PackageName/MyKotLinClass”:DexPathList[[directory“.”],NativeLibraryDirectories=[/Vendor/lib,/System/lib]]

共有1个答案

茅桐
2023-03-14

我通过从包含在Android绑定库中的AAR中的C++代码调用FindClass()找到了一个解决方案。然后我可以使用dlopen从我的主C++模块调用这个C++。

这对我来说是一个很好的解决方案,因为我控制了AAR的内容。如果您有一个第三方AAR,我认为如果您在Android绑定库中添加一个单独的C++.so文件也会起作用,但我还没有测试过这种情况。

 类似资料:
  • 问题内容: 命令: 异常(来自日志文件) 但是以下jar可用。 关于上述错误有什么建议吗? 问题答案: 您需要安装几个捆绑软件才能使用控制台,如果仅使用Equinox启动,则您将不会获得这些捆绑软件。 使此工作最快的方法是创建一个具有以下内容的文件: 注意, 您将不得不根据实际拥有的版本检查这些捆绑软件的版本号。我使用SDK-4.2M6进行了尝试,其中某些可能已在RC3中更改。

  • 找不到MessageSource的ResourceBundle[classpath:/org/springframework/security/messages]源:找不到基本名称的bundle classpath:/org/springframework/security/messages,locale ru我找不到任何在Java中设置国际化的解决方案 我的代码是这样的

  • 问题内容: 我正在尝试实现自定义Spring存储库。我有界面: 实现: 和“主”存储库,扩展了我的自定义存储库: 根据文档,我正在使用Spring Boot : 运行我的应用程序时,出现以下错误: 问题答案: 这里的问题是你正在创建,但正在中使用它。你需要进行创建才能完成这项工作。 阅读此文档以获取更多详细信息 基本上 Spring Data 2.x更新 此答案是为Spring 1.x编写的。正如

  • 我正在开发一个应用程序,它利用Hibernate框架将OSGi转换为更具体的Equinox Server。因此,我生成了库包和客户端插件,我在其中利用前面提到的库包对业务逻辑和数据库之间的通信进行编程。在我的项目中,我有以下包结构: 在管理器包中,我有那些负责将客户端与数据库和映射进行通信的类,其中一个包含配置文件和Hibernate映射文件。然而,当我部署捆绑包时,引用运行良好,但是我得到一个异

  • 我得到一个例外: 无法找到模板"" 其他类似的问题没有帮助;奇怪的是,它工作得很好,然后突然开始给我这个例外。 作曲家: 自动路由生成:单个RESTful控制器(用于简单资源) 配置: 路由: 控制器:

  • 问题内容: 我试图在我的android应用程序中实现数据绑定,但是我遇到了这个问题: 我的布局文件如下所示: 我用以下几行更新了文件: 如文档所建议:https : //developer.android.com/topic/libraries/data- binding/index.html 。我正在运行最新版本的Android Studio。 问题答案: 您需要将定义放在您的之外: