2

Want to know if it is possible to return a map object from C to Java using JNA librabry?

When I am trying to pass a std::map from 'C' and mapping it to java.util.map it is throwing the below error.

If you have any workaround please let me know.

java.lang.IllegalArgumentException: Unsupported return type interface java.util.Map in function calculateWcet
        at com.sun.jna.Function.invoke(Function.java:471)
        at com.sun.jna.Function.invoke(Function.java:323)
        at com.sun.jna.Library$Handler.invoke(Library.java:236)
        at com.sun.proxy.$Proxy92.calculateWcet(Unknown Source)
        at com.x.accent.wcet.plugin.JNA_WCET.calculateWcet(JNA_WCET.java:17)
        at com.x.accent.wcet.plugin.WCETFinder$1.run(WCETFinder.java:70)
        at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:726)
        at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$1(CoreProgressManager.java:176)
        at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:556)
        at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:501)
        at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:66)
        at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:163)
        at com.intellij.openapi.progress.impl.ProgressManagerImpl$1.run(ProgressManagerImpl.java:137)
        at com.intellij.openapi.application.impl.ApplicationImpl$2.run(ApplicationImpl.java:334)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Sanjit Kumar Mishra
  • 1,153
  • 13
  • 32
  • 2
    https://stackoverflow.com/questions/38591185/convert-c-map-to-jobject-jni – dimirsen Z Dec 21 '17 at 07:22
  • @dimirsen: Thanks for your comment, but I am looking for the solution in JNA. – Sanjit Kumar Mishra Dec 21 '17 at 10:12
  • my bad, read as JNI – dimirsen Z Dec 21 '17 at 11:06
  • 1
    `std::map` is in **C++**'s standard library. JNA does not provide support for C++ standard library structures and classes, probably because it would be a massive undertaking and an even greater maintenance burden. [This question's answers](https://stackoverflow.com/questions/2241685/java-native-access-doesnt-do-c-right) suggest some tools that may help you. Honestly, your best bet would be to expose the map natively in a simple format which you can easily model in Java - say, an array of key-value structs. – cbr Dec 24 '17 at 18:36
  • @cubrr: You are right, currently I am doing the way you suggested. – Sanjit Kumar Mishra Dec 27 '17 at 07:17

0 Answers0