javaeclipsemacos

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


Solution

  • 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.