问题标签 [native-methods]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 本机方法中的参数传递
可能重复:
jni 将 jstring 转换为 char *
С 上有一个函数(traverser.c 模块)
我想在Java上创建同名的本地方法
分别在 traverser.c 模块中会有一个函数
Java_ParallelIndexation_Traverser 函数是来自 traverser.c 模块的 Traverser 函数包装器。问题是:如何在 Java_ParallelIndexation_Traverser 中从 Traverser traverser.c 调用模块,将参数 jstring 路径传递给它,从而将其转换为 const char *(签名 Traverser看上面)?
c# - 如何获得比 VIX_E_FAIL 更具体的错误原因
当我在我的 C# 应用程序中使用本机方法 VixDiskLib_Write 时,如果连接突然消失,我会收到 VIX_E_FAIL 错误。有没有办法得到更具体的问题原因?
android - 如何切换“使用物理键盘”
我正在尝试解决与以下帖子相同的问题:
基本上我想从android切换本机选项来打开或关闭物理键盘。但是,我想通过代码创建这个按钮。
这些链接都没有一个好的答案。谁能帮我?
native-methods - 在不使用 C/C 的情况下将 .net 方法调用到 java
谁能解释我如何在我的java代码中调用.net方法(来自.dll),但我不想编写/使用C/C++代码请逐步解释它
java - 为什么 java.sql.DriverManager.getCallerClassLoader() 是原生的?
DriverManager.getCallerClassLoader()
类中的方法java.sql.DriverManager
声明为 native
. 我了解应用程序中的所有类加载器引用在当前执行的 JVM 中都可用。另外,我对本机方法的基本理解是,它用于调用本机库中定义的方法,并且它们在 JVM 执行环境之外执行。
我的问题是,DriverManager.getCallerClassLoader()
需要它的实现是本机的需要什么?
javascript - 为 document.querySelectorAll 创建一个短别名
我将运行 document.querySelectorAll() 很多,并且想要一个简写别名。
不工作。然而:
仍然如此。如何使别名起作用?
javascript - 对照 querySelector 检查元素?(使用本机方法,而不是 JQuery)
我有一个元素。我想检查它是否满足特定查询,例如('.someclass'),其样式与querySelector 相同。
这并不像听起来那么容易。Element.querySelectorAll和Element.querySelector仅适用于相关元素的后代。不是元素本身。
注意:上面的行仅用于说明目的。在现实生活中,我实际上是通过其他方式找到了该元素。
退货null
。因为 querySelector 只对后代进行操作。
我可以做:
但这会返回元素父元素的第一个子元素,它可能是不同的元素。例如,如果 'p' 是父级的第二个子级,则此代码将失败。
如何检查元素本身是否满足查询?
node.js - jsdom - document.querySelector 已启用,但文档中缺少
我想使用 JSDo 来执行一些基于服务器的 DOM 操作。但是,尽管明确启用了 querySelector,但它在创建的文档中是未定义的:
然而:
退货
如何使用 jsdom 使 document.querySelector 正常工作?
android - 从java调用本机方法时的Libc SIGSEGV
我正在尝试让我的 Amazon In-app Purchases SDK 的 PurchasingObserver 的 java 实现通过本机方法与我的 C++ 代码进行通信。
PurchasingObserver.java //摘录
AmazonInAppPurchaseHandler.cpp //摘录
一旦我执行任何生成事件的操作,就会发生以下情况: 1,事件处理程序被正确调用,它会进行日志记录。2,它还记录“发布事件...”,这是调用 postEvent() 之前的最后一件事。3,程序在 libc 中崩溃并带有 SIGSEGV。(它指的是我的应用程序,但请注意,反向 .com 名称被截断。我不确定这是否异常。) 4,C++ _NativePurchasingObserverPostEvent 中的跟踪永远不会到达。
日志:
12-05 10:24:47.380: D/com.mycompany.amazoninapp.PurchasingObserver@41970368(4604): onGetUserIdResponse: (com.amazon.inapp.purchasing.GetUserIdResponse@4196cf98, requestId: "dcf8e712-078b-4d47-9533- ee9ae544f53d”,getUserIdRequestStatus:“SUCCESSFUL”,userId:“DefaultTestUser”)
12-05 10:24:47.380: D/com.mycompany.amazoninapp.PurchasingObserver@41970368(4604): 发布事件...
12-05 10:24:47.380: A/libc(4604): 致命信号 11 (SIGSEGV) 在 0x00000008 (code=1), 线程 4604 (y.amazoninapp)
12-05 10:24:47.390: I/AmazonSDKTester(3529): 发送购买更新响应广播 ({"revokedSkus":[],"offset":"1354703087397","status":"SUCCESSFUL","requestId": "b9aee42e-4f50-42c4-8a12-ba9eb1d19155","isMore":false,"receipts":[{"sku":"com.mycompany.amazoninapp.ENTI01","token":"eyJ0eXBlIjoiTk9OQ09OU1VNQUJMRSIsInNrdSI6ImNvbS5wbGF5ZXJ0aHJlZS5hbWF6b25pbmFw\ncC5FTlRJMDEifQ\n", "itemType":"ENTITLED"}],"userId":"DefaultTestUser"})
我经历了正确获取 JNI 类名和方法签名字符串的迭代(我们已经过去了 UnsatisfiedLinkErrors);我正在仔细检查空字符串。我的 JNI 的其余部分工作正常,亚马逊应用内购买 UI 正确显示。保证在注册本机方法之前不会生成事件。
是什么导致了崩溃?
感谢您提前输入。
java - 在 Java Instrumentation Agent 库中重新转换本机方法
我正在尝试编写一个通过附加 api 动态加载的 Java 代理库,以重新转换一些方法(那些出现在某些线程的堆栈跟踪中的方法)以记录方法的进入/退出。然后通过自定义导出方法进入/退出信息MBean
。
到目前为止,只要检测方法不是本地的,我当前的“原型”就可以工作。
根据java.lang.instrument.Instrumentation#setNativeMethodPrefix()的文档,java 代理应该可以用非本地存根方法替换本地方法,并在其名称中添加另一个带有该前缀的本地方法,然后绑定到原始本机方法的本机代码。
但是,在实施此操作时,我收到此错误:
这是正确的,因为我添加了新的本机方法。
只有用非本地方法替换本地方法才有效,但是我不能将调用委托回原始本地方法。在另一个类中定义本机方法也不起作用,因为本机方法是通过类名和方法名查找的,没有nativeMethodClassSuffix
或类似的。在另一个新的类加载器中定义另一个同名的类是可行的,我认为可以通过一些间接方式将调用委托给新类,但是一个本机库只能链接到由只有一个类加载的本机方法类加载器,所以我不会正确链接本机方法。
我在这里有什么明显的遗漏吗?我的代码有点长,无法在此处发布,如果有人认为它有帮助,我可以尝试构建一个小型示例 java 代理来显示问题并在此处链接到它。