Note that there are some explanatory texts on larger screens.

plurals
  1. POUnsatisfiedLInkError Eclipse JNI (works from command line but not in Eclipse) package names
    primarykey
    data
    text
    <p>I'm able to run a program from the commmand line by typing "java main" where main.java and main.class are in the same directory as well as any related classes. This runs fine. When I try to run the same program in Eclipse I get Unsatisfied link errors. I think this is related to the JVM being used. I think that the command line java call is using a different JVM then eclipse. How can you specify which JVM java uses on the command line?</p> <p>I'm getting an UnsatisfiedLinkError when I run a program in Eclipse that uses native libraries.</p> <p>This isn't a typical "cannot find...." link error I believe it has actually found the file but there is some other problem.</p> <blockquote> <p>Exception in thread "main" java.lang.UnsatisfiedLinkError: com.me.this.MyClass.MyMethod(Ljava/lang/String;)I</p> </blockquote> <p>You can see that if it just could not find the shared library it would say something like:</p> <blockquote> <p>Exception in thread "main" java.lang.UnsatisfiedLinkError: no MySharedFile.so in java.library.path</p> </blockquote> <p>So I believe it is finding the file. </p> <p>Some other issues that are relavent are the fact that if i run the program from the command line instead of in eclipse it finds the .so and runs the program perfectly. <strong>Also I had this program running before in a different Eclipse that was using an older 1.6 JVM. I've tried to use that in this eclipse but it hasn't helped.</strong> </p> <p>Is this a problem finding the .so shared file? Or something completely different like I'm using the wrong JVM. I used strace on the java command line program and it appears it's using the new 1.7jdk the same one I'm using now in Eclipse and it will not work. </p> <p>The .so is in /usr/lib64 and I've also created a -Djava.library.path=... entry in the vm arguments for the run configuration just in case. </p> <p>I added these try catch around the load:</p> <pre><code>static { try{ System.loadLibrary("MyAwesomeLibrary"); System.out.println("MyAwesomeLibrary library loaded \n"); } catch(UnsatisfiedLinkError e){ System.out.println("Did not load library"); e.printStackTrace(); } } </code></pre> <p>And I get: </p> <pre><code>MyAwesomeLibrary library loaded Exception in thread "main" java.lang.UnsatisfiedLinkError: com.me.this.MyClass.MyMethod(Ljava/lang/String;)I at com.me.this.MyClass.MyMethod(Native Method) at com.me.this.Main.main(Main.java:8) </code></pre> <p>It's being called froma main class that looks like this:</p> <pre><code>public class Main { public static void main( String[] args ) { ClassThatContainsLoadedLIbrary x = new ClassThatContainsLoadedLibrary(); int y = x.Ping( "thisaddress" ); </code></pre> <p>So it appears that it's loading...at least it's getting to the print statement without link errors. the UnsatisfiedLink errors when it actually triest to <strong><em>use</em></strong> the library. </p> <p>I've been working on this problem for weeks so would really appreciate it if some one had some insight into this. Thanks. </p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload