简体   繁体   中英

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

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.

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!

I had a perfectly working Eclipse Luna, and started getting this error while trying to upgrade to Java 8 (and updating jre, jdk etc). Shan's solution didn't work for me. So I just downloaded and installed latest Eclipse. It's working fine. Saves the time of debugging and fiddling around.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM