JNI Native - System (java.lang.System)
David Holmes
david.holmes at oracle.com
Fri Aug 3 13:03:06 UTC 2018
On 3/08/2018 10:49 PM, mr rupplin wrote:
> How would I subscribe to core-libs-dev?
The same way you subscribed to build-dev. ???
http://mail.openjdk.java.net/mailman/listinfo/core-libs-dev
David
> Ok.
> ------------------------------------------------------------------------
> *From:* David Holmes <david.holmes at oracle.com>
> *Sent:* Thursday, August 2, 2018 11:55 PM
> *To:* mr rupplin; build-dev at openjdk.java.net
> *Subject:* Re: JNI Native - System (java.lang.System)
> Hi Max,
>
> The build-dev list is for discussing the OpenJDK build system. You
> appear to running into issues customizing parts of OpenJDK for your own
> use. It would be more appropriate to ask on core-libs-dev how to extend
> the System class - though examination of the existing native methods in
> System.java and System.c should show how it is done. There is not enough
> information in your post to see where you may have a made an error or
> omission.
>
> Cheers,
> David
>
> On 3/08/2018 12:53 PM, mr rupplin wrote:
>> Hello.
>>
>> Trying to run a simple JNI call and I keep getting the following:
>>
>> SecureJVM : GNU Public License 2.0
>> Program Name >> java
>> Launcher Name >> openjdk
>> Windows >> off
>> Version >> 9-internal+0-adhoc.mearvk.jdk9
>>
>> A new instance of Hope is born.
>> Exception in thread "main" java.lang.UnsatisfiedLinkError: java.lang.System.setMemoryAllocationListener0(Ljava/lang/memory/MemoryAllocationListener;)V
>> at java.base/java.lang.System.setMemoryAllocationListener0(Native Method)
>> at java.base/java.lang.System.setMemoryAllocationListener(System.java:261)
>> at Hope.<init>(Hope.java:19)
>>
>>
>> The source looks like:
>>
>> public static void setMemoryAllocationListener(MemoryAllocationListener memoryAllocationListener) {
>> checkMalloc();
>> setMemoryAllocationListener0(memoryAllocationListener);
>> }
>>
>>
>> The C source looks like:
>>
>>
>> JNIEXPORT void JNICALL
>> Java_java_lang_System_setMemoryAllocationListener0(JNIEnv *env, jclass cla, jobject listener)
>> {
>> printf("setMemoryAllocationListener called:\n");
>>
>> jfieldID fid =
>> (*env)->GetStaticFieldID(env,cla,"memoryAllocationListener","Ljava/lang/memory/MemoryAllocationListener;");
>>
>> printf("\t >> Lookup of MemoryAllocationListener completed");
>>
>> if (fid == 0)
>> return;
>>
>>
>> (*env)->SetStaticObjectField(env,cla,fid,listener);
>>
>> printf("\t >> SetStaticObjectField completed");
>> }
>>
>>
>> I am unable to discern the problem. The make runs clean as does a non-native call that instantiates a MemoryAllocationListener object.
>>
>> Can you guys spot the issue?
>>
>> Thanks,
>>
>> Max R.
>>
>> Sr. Software Tech
>>
More information about the build-dev
mailing list