Tag: native

为什么Eclipse使用本机启动器?

Eclipse IDE是用Java编写的巨大桌面应用程序的最佳示例之一。 我见过的大多数Java应用程序通常依赖于批处理或shell脚本来构建具有应用程序类路径的字符串,并使用类路径作为env变量启动JVM。 另一方面,Eclipse依赖于本机启动器。 这是为什么 ? 这个启动程序的脚本没有做什么? 我记得在大约一年半前读过一篇文章解释说“我们用本地发射器会更好”,但是id没有解释发射器的内部工作原理。

Solaris – 为什么java.lang.UNIXProcess.forkAndExec(Native Method)挂起

我有一个在Solaris上运行的java应用程序。 此应用程序使用Runtime.exec定期启动外部进程。 似乎在一段时间之后,多次成功启动此类流程,将启动流程。 此时(几分钟后)进行的线程转储显示java.lang.UNIXProcess.forkAndExec被“卡住”。 以下是从线程转储中获取的相关堆栈跟踪的顶部: “Thread-85305” prio=3 tid=0x0000000102aae800 nid=0x21499 runnable [0x7fffffff2a3fe000] java.lang.Thread.State: RUNNABLE at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.(Unknown Source) at java.lang.ProcessImpl.start(Unknown Source) at java.lang.ProcessBuilder.start(Unknown Source) at java.lang.Runtime.exec(Unknown Source) at java.lang.Runtime.exec(Unknown Source) 我已经阅读了其他人经历过的一些论坛,因为没有足够的空间或没有足够的内存而导致因为ExExcc抛出IOException,但我在这里没有收到此错误。 我现在正在等待获得pstack的结果,希望它能揭示更多的信息。 有没有人知道如何解决这个问题? 谢谢,迈克

java.lang.UnsatisfiedLinkError – JNI

每次运行程序时,我都会收到java.lang.UnsatisfiedLinkError错误。 我有一个本机,一个包装器,以及通过包装器调用本机的程序。 main.h #ifndef __MAIN_H__ #define __MAIN_H__ #include #ifdef BUILD_DLL #define DLL_EXPORT __declspec(dllexport) #else #define DLL_EXPORT __declspec(dllimport) #endif #include #include using namespace std; extern “C” { JNIEXPORT void JNICALL native_MessageBox(string text, string title); } #endif main.cpp中 #include “main.h” #include #include using namespace std; JNIEXPORT void JNICALL MsgBox(string text, string title) { MessageBox(NULL, text.c_str(), title.c_str(), MB_OK); […]

Java是否允许您在Mac OS X上使用本机UI小部件?

如果我在java中编写应用程序,如果在Mac OS X上运行,它是否使用本机小部件? 或者它是否使用java运行时提供的“相似”小部件? 谢谢。

如何使用常春藤发布本地库?

对于Java库项目,要发布的工件很简单,因为输出是单个jar文件。 但是,我还有一个项目,包含以下内容: MyLib.jar armeabi / libStuff.so armeabi-V7A / libStuff.so MIPS / libStuff.so 86 / libStuff.so 我无法将所有这些.so文件设置为工件,因为它们都具有相同的名称。 推荐的方式是什么? 把所有内容都放在一个zip中,让用户在构建之前使用gradle(或ant或其他)解压缩它? 我应该把Jar文件放在拉链旁边吗? 是否存在此类工件的约定?

正确地将硬编码的byte 从JNI返回给Java

我想在JNI中对16字节数组进行硬编码并使用方法返回它。 这不起作用 static jbyteArray JNICALL getKeyBytes(JNIEnv *env, jobject thiz) { F_LOG; Mutex::Autolock _m(sLock); jbyteArray result; jbyte* resultType = new jbyte[16]; result = (*env)->NewByteArray(env, 16); //line 214 resultType = {52, 14, 25, 32, 75, 83, 35, 89, 40, 69, 35, 73, 84, 82, 35, 30}; (*env)->SetByteArrayRegion(env, result, 0, 16, resultType); delete [] resultType; return result; } […]

从Java / Scala实例化Rhinoscript Native Objects

我正在尝试提高javascript片段评估程序的性能。 这些脚本片段可以引用存在于类似json的对象图(IE:Json AST)的字符串键控映射中的任意数量的变量。 我正在使用JDK 1.6和嵌入式Rhinoscript引擎(v1.6R2)。 目前,处理采用以下forms: 解析代码段以发现引用变量的名称 从地图中检索变量并将其序列化为json字符串 Json字符串被分配给脚本开头的类似命名的变量 评估增强的脚本 我试图找出如何跳过json序列化阶段并创建直接Rhinoscript本机对象放置在脚本的“绑定”中。 然后,所需的步骤是: 解析代码段以发现引用变量的名称 从地图中检索变量并将其转换为原生Rhinoscript等价物 本机对象放置在绑定中 用所述绑定评估原始脚本 你知道我在哪里可以找到如何实例化原生rhinoscript对象的文档或示例吗? 如果你想修补我的scala学习项目可能会有所帮助。 我想出的任何答案都应该出现在那里…… http://subversion.assembla.com/svn/freshcode_public/learn_scala/datastore/src/test/scala/pkg/script 提前致谢。

java字节是否与C#字节相同?

如果输入参数是字节数组 – byte [],则dll中的native方法在java中工作。 如果我们使用c#中的相同方法,则抛出EntryPointNotFoundException。 是因为java和c#中的byte []是不同的东西? 如果是这样我应该如何使用c#中的本机函数?

如何在JNA中映射枚举

我有以下枚举如何在jna中映射? 该枚举在结构中进一步引用。 typedef enum { eFtUsbDeviceNotShared, eFtUsbDeviceSharedActive, eFtUsbDeviceSharedNotActive, eFtUsbDeviceSharedNotPlugged, eFtUsbDeviceSharedProblem } eFtUsbDeviceStatus; 阿卜杜勒·哈利克

使用Maven将runnable .jar中的本机依赖项捆绑在一起

我有一个在Maven中管理的项目,它有一些本机依赖项 ( LWJGL )。 一切都在开发中工作正常,但现在我想设置Maven,以便它将构建一个可以重新分发的可运行的.jar文件。 特别是,我希望用户可以非常轻松地运行应用程序,而无需使用库路径或解压缩本机库等。 目前我能够构建一个包含所有依赖项的.jar文件,但如果我运行它(不出所料)我得到一个不满意的链接错误: Exception in thread “main” java.lang.UnsatisfiedLinkError: no lwjgl in java.libr ary.path at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.loadLibrary0(Unknown Source) at java.lang.System.loadLibrary(Unknown Source) at org.lwjgl.Sys$1.run(Sys.java:73) at java.security.AccessController.doPrivileged(Native Method) at org.lwjgl.Sys.doLoadLibrary(Sys.java:66) at org.lwjgl.Sys.loadLibrary(Sys.java:95) at org.lwjgl.Sys.(Sys.java:112) at org.lwjgl.opengl.Display.(Display.java:132) at glaze.TestApp.start(TestApp.java:10) at glaze.TestApp.main(TestApp.java:31) 显然,我可以通过手动安装本机库并使用java -Djava.library.path=/path/to/libs运行jar来使其工作,但这不是我期望用户做的事情。 这是pom.xml,如果它是相关的: https : //github.com/mikera/glaze/blob/master/pom.xml 可以设置Maven,以便它创建一个包含本机依赖项的可运行.jar,并在双击时成功运行?