草庐IT

hello-jni

全部标签

Java JNI 调用比预期慢(至少 2 毫秒/调用)

我从其他几份报告中读到,人们通常在4-80ns上花费一个普通的、基本的JNI调用:来自WhatmakesJNIcallsslow?Fortrivialnativemethods,lastyearIfoundcallstoaverage40nsonmyWindowsdesktop,and11nsonmyMacdesktop..来自PossibleincreaseofperformaceusingJNI?HoweverJNIcallsoftentakearound30ns..当我在我的JNI代码中调用简单方法时(简单的意思是不超过一个时间int返回类型int的参数),我得到的往返调用时间(

java - 是否可以通过 JNI 将静态库链接到 Java?

是否可以构建HelloWorld.lib并将其加载到使用JNI的Java应用程序中?或者它只适用于共享库?我在JNI文档中找不到明确的答案,没有提到“静态库”。 最佳答案 需要是动态库。幸运的是,您可以从静态库构建动态库。 关于java-是否可以通过JNI将静态库链接到Java?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/15433684/

java - 通过 JNI 将双字节 (WCHAR) 字符串从 C++ 传递到 Java

我有一个Java应用程序,它通过JNI使用C++DLL。DLL的一些方法采用字符串参数,其中一些方法返回也包含字符串的对象。目前DLL不支持Unicode,所以字符串处理比较简单:Java调用String.getBytes()并将生成的数组传递给DLL,DLL将数据简单地视为char*。DLL使用NewStringUTF()从constchar*创建jstring。我现在正在修改DLL以支持Unicode,切换到使用TCHAR类型(当定义UNICODE时使用Windows的WCHAR数据类型)。修改DLL进行得很顺利,但我不确定如何修改代码的JNI部分。我现在唯一能想到的是:Java调

java - 使用 long 将指针从 JNI 传递到 Java

我正在尝试将结构作为指针从JNI传递到Java,以便稍后能够将它从Java传递回JNI。我读过这个帖子:PassingpointersbetweenCandJavathroughJNI,但我没有成功。我有一个非常复杂的结构:structmyStruct_smyStruct;在Java中,我调用一个JNI函数来初始化结构并返回一个long(指向结构的指针):JNIEXPORTjlongJNICALLJava_example_ExampleJNI_getStruct(JNIEnv*jenv,jclassjcls){structmyStruct_smystruct;long*lp=(long

java - JavaEE 8 教程,在 hello1 项目上部署失败

我正在尝试学习JavaEE8,我已按照https://javaee.github.io/tutorial/上的官方指南进行操作但我有这个问题:---cargo-maven2-plugin:1.4.4:redeploy(deploy)@hello1---[DeployerRedeployMojo]Resolvedcontainerartifactorg.codehaus.cargo:cargo-core-container-glassfish:jar:1.4.4forcontainerglassfish5x-----------------------------------------

java - 在 Mac 上安装 rJava 时遇到问题; JNI 数据类型的问题

已解决!!请参阅下面我的解决方案,以防这个问题在未来对其他人有所帮助。错误如标题所述,它对我来说失败了。当我尝试从R内部安装install.packages('rJava')时,我收到的错误是(之前进行了一些良好的检查):checkingwhetherJNIprogramscanbecompiled...yescheckingJNIdatatypes...configure:error:OneormoreJNItypesdifferfromthecorrespondingnativetype.Youmayneedtousenon-standardcompilerflagsoradiff

java - 配置 drools 和 maven 并使用它们编写 hello world 应用程序

我想学习drools和maven任何人都可以帮助我提供配置drools和maven的链接并使用它们编写一个基本的helloworld示例。提前致谢 最佳答案 您应该先阅读手册,然后尝试用谷歌搜索。之前也有人问过这样的问题,例如:HowtodeployDroolsFlowandrulesbymywebapplication但无论如何。如果您使用Maven和Spring,这是如何集成它:您首先需要包含Drools依赖项:org.droolsdrools-core${drools.version}org.droolsdrools-comp

java - JNI。如何从 jobject 获取 jstring 并将其转换为 char*

这是我目前所拥有的:我传递了一个具有2个字段的对象:String和Integer,作为参数我想发送信息在C部分进行处理,这在这一点上并不重要......我在jstring声明中收到投诉JNIEXPORTjintJNICALLJava_Tier3_NativeMethods_totalPalletsIn(JNIEnv*env,jclasscls,jobjectstat){jclassstaticsitcs=(*env)->GetObjectClass(env,stat);//HereItrytogetitusingtheIDjfieldIDidDate=(*env)->GetFieldI

java - 无法在 Eclipse 中运行 "Hello World"Drools 示例 : runtime exception org. drools.RuntimeDroolsException: 无法加载方言

我刚刚在Eclipse(版本3.5.2)中安装了Drools插件,我正在尝试运行该插件附带的“HelloWorld”示例。当我运行代码时,出现运行时错误,堆栈跟踪如下:org.drools.RuntimeDroolsException:Unabletoloaddialect'org.drools.rule.builder.dialect.java.JavaDialectConfiguration:java:org.drools.rule.builder.dialect.java.JavaDialectConfiguration'atorg.drools.compiler.Package

Java JNI - 是否可以从 C++ 在 Java 中设置单个原始数组元素

基本上,我一直在执行以下操作来检索Java实例字段(在本例中为int)并将其设置为新值,如下所示:jclasscls=env->GetObjectClass(obj);jfieldIDfid=env->GetFieldID(cls,"myVariable","I");env->SetIntField(obj,fid,(jint)2012);但是,我想对javaint数组中的单个int元素执行此操作,这样:jclasscls=env->GetObjectClass(obj);jfieldIDfid=env->GetFieldID(cls,"myVariableArray","[I");P