草庐IT

concrypt_openjdk_jni

全部标签

android - 未找到 JNI_OnLoad 跳过 init > 应用程序关闭

各位,我正在开发一个需要第三方.so库的android应用程序。我build了这个第三方库(带有ndk-build)按照他们的说明,然后正在寻找将这个.so包含到我的Android项目中。因此我按照docs/PREBUILTS.html中描述的步骤成功构建了在jni/prebuilt目录中新建.so。现在我尝试通过在一个简单的测试android应用程序中使用它来利用.so设施。所以我做的是:static{Log.i("loadso>","loadso");System.loadLibrary("xyz");}/*Thenativefunctions*/privatestaticnati

c++ - JNI DeleteLocalRef 说明

问题一:jstringjstrKey;for(inti=1;iNewString((jchar*)strKey,wcslen(strKey));}env->DeleteLocalRef(jstrKey);问题二:for(inti=1;iNewString((jchar*)strKey,wcslen(strKey));env->DeleteLocalRef(jstrKey);}我在这两个问题中是否正确使用了DeleteLocalRef?特别是在问题1中,我在循环后删除了本地引用。我认为这是正确的,并且不需要在循环内调用deletelocalref,因为我没有创建任何新的本地引用。所以关于

java - 使用Qt/C++通过JNI调用Java代码。 FindClass 没有找到类

我是JNI的新手,这是我尝试从C++调用Java代码的第一个程序。我正在使用Qt5.2并正在编写一个Android应用程序。我无法找到我的java类并将其加载到我的C++程序中。我在这里阅读了很多关于堆栈溢出和其他地方的帖子,这似乎是一个常见问题,但我还没有能够解决我的问题..我也不确定是否正确设置了JavaVM,因为QAndroidJniEnvironment上的Qt文档很少。我正在寻找有关如何找到我的Java类的解决方案。我也很感谢对代码其他部分的一般反馈(我认为可能会有更多错误)。错误信息:Startingremoteprocess.D/dalvikvm(24911):GC_CO

java - JNI传递参数给c++的方法

我有一个c++文件myCppTest.cpp,它有方法intmyFunction(intargv,char**argc){}和myClass.java中的Javanative方法publicnativeintmyFunction(intargv,char[][]argc);使用javah-jnimyClass生成头文件后,我有了头文件JNIEXPORTjintJNICALLJava_JPTokenizer_init(JNIEnv*,jobject,jint,jobjectArray);在我的myClass.cpp中,我定义了JNIEXPORTjintJNICALLJava_JPToke

java - JNI_CreateJavaVM() 每次我运行我的应用程序时都会失败(确切地说)

我有一个WindowsMFC应用程序:(1)加载JVM(JNI_CreateJavaVM())(2)将主线程附加到JVM(AttachCurrentThread())(3)加载一些Java类和方法(FindClass()和GetMethodID()/GetStaticMethodID())(4)注册一些本地回调以供Java代码使用(RegisterNatives())(5)从JVM中分离线程(DetachCurrentThread())(6)销毁JVM(DestroyJavaVM())所有上述功能每隔一段时间我运行该应用程序。我知道它们成功了,因为除了上述之外,我与应用程序交互并成功调

java - 使用 Java JNI 时是否可以调试核心转储?

我的应用程序主要是Java,但对于某些计算,使用C++库。我们的环境是在RedHat3(即将成为RedHat5)上运行的Java1.6。我的问题是C++库不是线程安全的。为了解决这个问题,我们运行多个单线程“工作”进程,并从同样用C++编写的中央工作管理器为它们分配工作。我们的Java应用程序通过第三方产品调用C++工作管理器。由于各种原因,我们想重写C++WorkManager和workers。我赞成全部用Java编写,在每个worker中使用JNI来调用C++库。主要问题是如果C++库核心转储会发生什么。不幸的是,这很常见,我们需要能够看到C++库中的哪一行导致了问题,例如通过检查

java - 如何用IntelliJ IDEA创建jni头文件

我想在IntelliJIDEA中创建头文件。这是我的做法:文件>设置>工具>外部工具然后我点击+,指定标题并设置参数如下:程序:C:\ProgramFiles\Java\jdk1.8.0_25\bin参数:-dC:\Users\Administrator\Documents\VisualStudio2013\Projects\JniExampleLibrary-jniExample.JniExample工作目录:C:\ProgramFiles\Java\jdk1.8.0_25\bin但是点击ok之后,上面用-d定义的路径下没有JniExample.h文件你能告诉我它有什么问题吗?提前致

c++ - System.arraycopy 的 OpenJDK 实现

在一个与JVM基于char[]实现字符串创建的方式相关的问题之后,我提到当char[]被复制到新字符串的内部时不会发生迭代,因为System.arraycopy得到最终被调用,它使用诸如memcpy之类的函数在native的、依赖于实现的级别(theoriginalquestion)复制所需的内存。我想亲自检查一下,所以我下载了Openjdk7源代码并开始浏览它。我在OpenJDKC++源代码中找到了System.arraycopy的实现,在openjdx/hotspot/src/share/vm/oops/objArrayKlass.cpp中:if(stype==bound||Kla

android - JNI 保持对对象的全局引用,使用其他 JNI 方法访问它。在多个 JNI 调用中保持 C++ 对象存活

我刚开始使用JNI,但遇到以下问题。我有一个包含简单类的C++库。我从JavaAndroid项目中调用了三个JNI方法,分别实例化所述类、调用实例化类的方法并销毁它。我保留了对该对象的全局引用,因此我可以在其他两个JNI方法中使用它。我怀疑我做不到。当我运行该应用程序时,出现运行时错误(使用过时的引用),我怀疑这是因为全局引用在后续调用其他JNI方法时无效。是实现我想要的(让对象在多个JNI调用中存在)的唯一方法,实际上将指向实例化类的指针传回Java,将其保留在那里,然后将其传回JNI功能?如果是这样,那很好,我想确保我不能用全局引用来做到这一点,而且我不仅仅是遗漏了什么。我已经阅读

在 CentOS 7/RHEL 7 上安装 Java 17 (OpenJDK 17) |

在CentOS7/RHEL7上安装Java17(OpenJDK17)|Java是一种流行的编程语言,最初由SunMicrosystems的JamesGosling创建,但现在归OracleCorporation所有。Java的第一个版本于1995年发布。Java被设计为独立于平台,这意味着用Java编写的任何程序都可以在安装并运行Java虚拟机(JVM)的任何系统上运行。Java也是一种面向对象编程(OOP)语言,它提供类、对象、继承和多态性等功能,允许开发人员构建模块化和可重用的代码。为了开发Java应用程序,您需要安装JDK,其中包括Java编译器(javac)、Java虚拟机(JVM)以