2023-01-20 300
我正在尝试向OpenJDK源添加自定义的本机方法(免费),因此我可以将该方法称为System.Free()从用户应用程序内部.
我将在线资源转介并进行了以下更改:
{JDK13ROOT}/src/java.base/share/classes/java/lang/Runtime.java
public static native void free();
{JDK13ROOT}/src/java.base/share/classes/java/lang/System.java
public static void free() {
Runtime.getRuntime().free();
}
{JDK13ROOT}/src/java.base/share/native/libjava/Runtime.c
JNIEXPORT void JNICALL
Java_java_lang_Runtime_free(){
printf("Caught !\n");
}
上述更改后,我能够成功编译直接调用system.free()的驱动程序程序,并在执行后打印 .
我想在java_java_lang_runtime_free()中拨打jvm_free(),如下:
JNIEXPORT void JNICALL
Java_java_lang_Runtime_free(){
printf("Caught !\n");
JVM_Free();
}
我在
{jdk13root}/src/hotspot/share/include/jvm.h
JNIEXPORT void JNICALL
JVM_Free(void);
和 {jdk13root}/src/hotspot/share/share/prims/jvm.cpp中的相同定义
JVM_ENTRY_NO_ENV(void, JVM_Free(void))
JVMWrapper("JVM_Free");
printf("SUCCESS\n");
JVM_END
我参考了GC()的实现,并进行了相同的更改.但是,当我构建程序时,我会收到以下错误.
Updating support/modules_libs/java.base/libjava.so due to 1 file(s)
/usr/bin/ld: {JDK13ROOT}/build/linux-x86_64-server-slowdebug/support/native/java.base/libjava/Runtime.o: in function `Java_java_lang_Runtime_free':
{JDK13ROOT}src/java.base/share/native/libjava/Runtime.c:71: undefined reference to `JVM_Free'
我无法弄清楚为什么我无法调用Runtime.C.
的任何功能
ps:我还尝试从System.c而不是Runtime.c添加本机方法,并且看到了相同的构建故障.我在这里想念或做错了什么?
您的符号(JVM_Free)未导出.在这里看(t vs. t)
> nm libjvm.dylib | grep JVM_GC
000000000041508c T _JVM_GC
vs.
> nm libjvm.dylib | grep JVM_Free
000000000041517a t _JVM_Free
为了导出新符号,您必须在此处添加
{JDK13ROOT}/make/hotspot/symbols/symbols-unix
一旦到达那里,您就可以从libjvm.dylib的外部”看到”它(或.so).
以上所述是小编给大家介绍的将本机方法添加到OpenJDK源代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/26096.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态