Tag: jni

这个java方法调用有什么问题?

我试图从代码中调用Java方法。 C代码监听Escape , Shift , Ctrl键,然后调用Java方法告诉按下了哪个键。 以下是在此中发挥作用的片段。 C片段: mid = (*env)->GetMethodID(env,cls,”callBack”,”(Ljava/lang/String;)V”); Env = env; if(called) switch(param) { case VK_CONTROL: printf(“Control pressed !\n”); (*Env)->CallVoidMethodA(Env,Obj,mid,”11″); // calling the java method break; case VK_SHIFT: printf(“Shift pressed !\n”); (*Env)->CallVoidMethodA(Env,Obj,mid,”10″); // calling the java method break; case VK_ESCAPE: printf(“Escape pressed !\n”); (*Env)->CallVoidMethodA(Env,Obj,mid,”1B”); // calling the java method break; default: printf(“The […]

这些java本机内存从哪里分配?

JDK版本是热点8u_45 我研究了我的java进程的本机内存。 本机内存甚至比堆消耗更多空间。 然而,有许多本机内存块让我感到困惑。 例如pmap -x的结果: 00007f8128000000 65508 25204 25204 rw— [ anon ] 00007f812bff9000 28 0 0 —– [ anon ] 00007f812c000000 65508 24768 24768 rw— [ anon ] 00007f812fff9000 28 0 0 —– [ anon ] 00007f8130000000 65508 25532 25532 rw— [ anon ] 00007f8133ff9000 28 0 0 —– [ anon ] 00007f8134000000 […]

检查是否已加载dll库? (JAVA)

在我编写的Java程序中,我对dll进行jni调用,并在启动时加载库,如下所示 static { System.loadLibrary(“LdapAuthenticator2”); } 然后,我实现了另一个加载相同库的类,并且收到一个错误,说明该库已经加载了,有没有办法检查库是否已经在运行? 谢谢, -Pete

如何让Apple Java Extensions(com.apple.eawt)在JDK 7及更高版本上运行?

TL; DR :Apple已经放弃了Java中的原生function支持。 特别是触摸板手势不再起作用。 我写了一个使用JNI完成工作的库。 看看我的答案如下。 我正在寻找几个小时的时间来让Apple Java Extensions在JDK 7或8上工作。我一直在尝试我能想到的一切。 关于这一点的互联网上的所有主题都只是责怪JDK。 我认为这应该是可以解决的,因为它在JDK 6中有效。为了清楚起见:我可以使它在JDK 6中工作,但我不希望这种遗留依赖,因为不是每个将使用我的应用程序的人都有JDK 6或知道如何我要说,安装它。 目标是制作一个可双击的JAR文件,该文件将按照预期的OS Xfunction(菜单栏,手势,关于处理程序等)运行,并安装每个Java版本(大于JDK 6)。

Java和C ++共享内存

我有一段C ++代码来创建共享内存。 除非使用JNI,否则可以编写可以读取由C ++代码创建的内存的Java代码。 顺便说一句,我使用的是Windows操作系统。

在Java applet中动态加载本机库

我正在尝试编写一个将从用户的串行端口读取的Java小程序。 为此,我将Java Comm API与RXTX库结合使用。 我已成功设法通过本地Java应用程序读取数据,但我似乎无法在applet中执行相同操作。 问题是RXTX库是一个本机库,我还没有找到在Java applet中加载这个库的方法。 我发现了两篇有趣的文章( 在Applet中使用JNI引用了这篇文章 ),但两者都超过10年,我想知道是否有更新的解决方案。 或者,如果您可以提出替代方案,我很乐意听到它!

从Java访问iSeries上的RPG

有没有人有过直接谈论从Java运行在V5R4 iSeries机器上的RPG程序的好经验? 如果是这样,社区的建议是什么,我应该尽量避免哪些陷阱? 从我试过的各种文献和尖峰解决方案看起来好像我们可以使用ProgramCallBeans(通过PCML或xPCML),与DataQueues(用于异步通信)或甚至JNI交谈。 我正在寻找一些强大,高效,快速开发,易于维护和易于测试的东西(不是我们所有人!?!)。

如何检查文件是否可读?

我正在编写Java 6应用程序,我必须检查文件是否可读。 但是,在Windows上, canRead()始终返回true 。 所以我看到可能,唯一的解决方案可能是基于WINAPI并使用JNA / JNI编写的一些本机解决方案。 但是,还有另一个问题,因为在WINAPI中很难找到一个简单的函数,它会返回有关文件访问的信息。 我找到了GetNamedSecurityInfo或GetSecurityInfo但我不是一个高级的WINAPI程序员,对于我来说,与JNA / JNI相关的它们太复杂了。 有什么想法如何处理这个问题?

使用applet加载.DLL并在客户端上使用它

我可以在applet中从服务器加载到客户端的.dll ,然后在客户端调用加载.dll(使用JNI)的方法吗?

JNI附加/分离线程内存管理

我有一个JNI回调: void callback(Data *data, char *callbackName){ JNIEnv *env; jvm->AttachCurrentThread((void **)&env, NULL); /* start useful code*/ /* end useful code */ jvm->DetachCurrentThread(); } 当我这样运行它(空的有用代码)时,我得到了内存泄漏。 如果我注释掉整个方法,就没有泄漏。 连接/分离线程的正确方法是什么? 我的应用程序处理实时声音数据,因此必须尽快完成负责数据处理的线程,以便为另一批次做好准备。 所以对于这些回调,我创建了新的线程。 它们每秒都有几十甚至几百个,它们将自己附加到JVM,调用一个重新绘制图形,分离和死亡的回调函数。 这是做这件事的正确方法吗? 如何处理泄漏的内存? 编辑:错字 好的,我已经创建了一个所需的mimimal代码: package test; public class Start { public static void main(String[] args) throws InterruptedException{ System.loadLibrary(“Debug/JNITest”); start(); } public static native void start(); } 和 […]