Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mac OS, JDK1.7 (and 1.8) does not contain the JNI_CreateJavaVM symbol

I need to run Eclipse Kepler on Mac OS through a JDK 1.7 (This is required by the PyDev plugin).

The problem is that although I have managed to install the 1.7 jdk and configured the eclipse.ini to use it I get the error

The JVM shared library "/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/bin../jre/lib/server/libjvm.dylib" does not contain the JNI_CreateJavaVM symbol.

UPDATE smart people here https://github.com/joeferner/node-java/issues/90 claim it is enough to add JNI to the JVMCapabilities in the info.plist file like

<key>JVMCapabilities</key>
   <string>JNI</string>

But I tried it and it does not work in my case

like image 738
Andrea Sindico Avatar asked Jul 05 '14 19:07

Andrea Sindico


2 Answers

Right click on the Eclipse icon and select 'show package contents'. Inside the contents directory you'll find a file called 'Info.plist'. Scroll down to the bottom of the file till you find this

<key>Eclipse</key>
    <array>
        <!-- to use a specific Java version (instead of the platform's default) uncomment one of the following options,
                or add a VM found via $/usr/libexec/java_home -V
          <string>-vm</string><string>/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/bin/java</string>
          <string>-vm</string><string>/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Commands/java</string>
        -->

Notice the commented out section. Move the jdk path declaration out of the comments section. It should look like this now.

<key>Eclipse</key>
    <array>
      <string>-vm</string><string>/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/bin/java</string>
        <!-- to use a specific Java version (instead of the platform's default) uncomment one of the following options,
                or add a VM found via $/usr/libexec/java_home -V
          <string>-vm</string><string>/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Commands/java</string>
        -->

Last step, browse to /Library/Java/JavaVirtualMachines and check the jdk package name present there. Replace the jdk version in the above command with that.

/Library/Java/JavaVirtualMachines/{your_jdk_package_name}/Contents/Home/bin/java

Optional: On some machines you may have to close the finder after you've done all this, navigate to the eclipse folder and click on eclipse again for it to work.

like image 181
Shan Avatar answered Oct 14 '22 07:10

Shan


Just for those who may have been stuck after doing both tasks described above and still seeing the same error message: I was certain that I had downloaded 64-bit Eclipse, but it turns out I had the 32-bit version. After downloading 64-bit, everything worked!

like image 15
tobylaroni Avatar answered Oct 14 '22 06:10

tobylaroni