草庐IT

concrypt_openjdk_jni

全部标签

java - 可以让 JNI 支持类路径中的通配符扩展吗?

我有一个通过JNI调用Java的C二进制文件。我将CLASSPATH设置为somedir/*以获取somedir中的所有jar。当我运行二进制文件时,找不到所需的类定义。当我运行时javathat.class's.name从同一个命令行,成功找到类。如果我明确地将somedir/中的所有jar添加到类路径,一切都很好,但这会导致非常长的类路径,我想避免。通过JNI执行的JVM是否支持类路径的通配符扩展?能做到吗? 最佳答案 我通过阅读热点源码找到了答案。只有通过CLASSPATH或-cp/-classpath传递的路径才能进行通配符

makefile - 构建 OpenJDK 时的困惑参数

尝试构建OpenJDK时,我在执行makeall时遇到了一系列错误:/usr/bin/make:invalidoption--'8'/usr/bin/make:invalidoption--'/'/usr/bin/make:invalidoption--'a'/usr/bin/make:invalidoption--'/'/usr/bin/make:invalidoption--'c'运行makeallLOG=traceJOBS=1给出+/usr/bin/makeVERBOSE=LOG_LEVEL=trace-R-I/home/ft/openjdk8/make/common-fadlc

java - 如何通过 JNI 将 HashMap 从 Java 发送到 C

我有一个Object,它有一个HashMap字段。当Object传递给C时,我如何访问该字段?Object的Class具有以下字段:privateStringhello;privateMapparams=newHashMap(); 最佳答案 您问题的答案实际上归结为为什么您要传递一个Map到C而不是迭代你的Map在Java中并将内容传递给C。但是,我有什么资格质疑为什么?你问如何访问HashMap(在您提供的代码中,Map)字段?用Java为它编写一个访问器方法,并在传递容器时从C调用该访问器方法Object.下面是一些简单的示例代

java - 使用调用 API 的 JNI 内存管理

当我使用JNI方法构建一个java对象时,为了将它作为参数传递给我使用JNI调用API调用的java方法,我该如何管理它的内存?这是我正在使用的:我有一个C对象,它有一个比free()更复杂的析构函数方法。此C对象将与Java对象相关联,一旦应用程序完成了Java对象,我就不再需要C对象了。我正在像这样创建Java对象(为清楚起见省略了错误检查):c_object=c_object_create();class=(*env)->FindClass(env,"my.class.name");constructor=(*env)->GetMethodID(env,class,"","(J)

java - 为什么 dtruss 不显示此 JNI 代码中的 select 系统调用?

在MacOS上调查这个JDK错误时,我遇到了我不理解的系统调用跟踪输出:Tomcatstartupfailsdueto'java.net.SocketExceptionInvalidargument'onMacOSX简短版本:在MacOS上,JDK使用select()而不是poll()。因此,如果分配了超过1024个文件描述符,我们推断NET_Timeout中的select()调用失败,导致出现带有“无效参数”消息的SocketException。但是,当我跟踪系统调用时,我没有看到select()系统调用的证据,也没有看到任何失败并设置EINVAL的调用,因此我认为这是一个潜在原因。

java - 使用 Eclipse 调试 OpenJDK 源代码

在我的项目中,我想使用eclipse调试OpenJDK版本8的C/C++源代码。为此,我做了以下工作:使用此readme使用--with-debug-level=slowdebug编译OpenJDK8.将sourcesmakefile项目导入到eclipse中创建了一个eclipse运行配置,针对已编译的OpenJDK的java.exe执行gdb并针对示例java程序。在此配置中,我附加了JDK源代码目录路径,以便eclipse能够将调试符号转换为源代码行并向我查看它们(显然)通过这种方法,我可以通过java.c等文件的代码进行调试。我的问题是不知何故我仍然无法通过native代码进行

java - 如何在没有 Valgrind 错误的情况下调用 JNI_CreateJavaVM?

在valgrind下编译和运行以下代码时,我一直收到“Invalidwriteofsize4”错误。有没有一种调用JNI_CreateJavaVM()的简洁方法,这样valgrind就不会出错?#include#include#includeintmain(){JavaVMInitArgs*vm_args=calloc(1,sizeof(JavaVMInitArgs));JavaVM*jvm=NULL;JNIEnv*env=NULL;vm_args->version=JNI_VERSION_1_6;vm_args->nOptions=0;vm_args->options=NULL;JN

java - 在 Ubuntu OpenJDK 7 上启用密码

我编写了以下Java程序来将启用的密码转储到JVM中:importjava.security.KeyStore;importjavax.net.ssl.KeyManagerFactory;importjavax.net.ssl.SSLContext;importjavax.net.ssl.SSLSocket;importjavax.net.ssl.TrustManagerFactory;publicclassListCiphers{publicstaticvoidmain(String[]args)throwsException{SSLContextctx=SSLContext.get

java - CentOS OpenJDK 组件是否已通过 TCK 合规性测试?

RedHat提供已通过TCK合规性测试的OpenJDK二进制发行版,如其OpenJDKLifeCycleandSupportPolicy中所述.等效的CentOSOpenJDKrpm包带有相同的版本字符串,并且看起来与它们的RHEL对应物的行为方式完全相同。然而,内容略有不同。我的假设是CentOS构建使用与RedHat相同的上游源代码版本,不同之处在于系统库或构建环境。这给我留下了一些问题。CentOSOpenJDK构建是否通过了TCK合规性测试?如果不是,那么假设CentOSOpenJDK具有已知质量的合理性如何?(我想使用像CentOS这样广泛使用的东西是有保证的。)物有所值-我

java - Eclipse:JVM 共享库不包含 JNI_CreateJavaVM 符号

MacOSX10.9上的Eclipse4.4.0,当我尝试运行它时JVM8发出警告:“JVM共享库“/Library/Java/JavaVirtualMachine/jdk1.8.0_20.jdk/Contents/Home/bin/.../jre/lib/server/libjvm.dylib”不包含JNI_CreateJavaVM符号”应用程序没有启动。我按照Shan的8/25说明编辑了Info.plist,但我仍然遇到同样的错误。我也从Apple的网站下载并安装了Java,但我仍然遇到同样的错误。感谢您的帮助。 最佳答案 如果