OS X: Install JDeveloper 11g on OS X 10.6
If you start development against the Oracle Fusion middleware set, it only makes sense to pick an IDE which supports those middleware products out of the box. While I still enjoy Eclipse and MyEclipseIDE, JDeveloper 11g becomes the natural choice for Oracle development. The JDeveloper 11g download is free and supports the main distributions such as Windows, Linux and Mac. The download itself weighs in at a hefty 1,4GB.
The installation on OS X is however not straightforward and running on OS X 10.6.2, I had to make the following adjustments to make the install work:
- Ensure that you are running JDK 1.6: Pop into a terminal session and the command java -version should show you:
java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03-219)
Java HotSpot(TM) 64-Bit Server VM (build 14.1-b02-90, mixed mode)
- If the 1.6 JVM is not your default, open the Java Preferences (via /Applications/Utilities/Java) and move the Java SE (64 Bit) to the top of the Java application versions list.
- JDeveloper will stil not install as it requires a symbolic link in your Java directory. Execute the following commands from terminal:
sudo mkdir jre
sudo mkdir lib
sudo ln -s ../../Classes/classes.jar rt.jar
- Once the symlink has been created, start the JDeveloper installer and select the following the directory “/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0” in the JDK selection:
- Installation will start and as a last action, drag the JDeveloper runtime from $HOME/Oracle/Middleware/JDeveloper onto your quickstart bar
- There seems to be another installation issue, and although the install knows about the JDK selection, JDeveloper requires a further config file. From the terminal issue the following:
echo /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home >~/.jdev_jdk(This will configure the default JDK for JDevloper – don’t ask, I was equally stunned about this)
- Oracle also managed to stuff up the JDeveloper package and it’s Info.plist. Go to ~/Oracle/Middleware and right click on JDeveloper and then “Show Package Contents”. Edit the Info.plist and replace with content below:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleDevelopmentRegion</key> <string>English</string> <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleName</key> <string>JDeveloper</string> <key>CFBundleShortVersionString</key> <string>11g</string> <key>CFBundleGetInfoString</key> <string>JDeveloper 11g</string> <key>CFBundleExecutable</key> <string>JDeveloper</string> <key>CFBundleIconFile</key> <string>JDeveloperIcons.icns</string> <key>CFBundleIdentifier</key> <string>oracle.ide.boot.Launcher</string> <key>CFBundleSignature</key> <string>JDEV</string> <key>CFBundleVersion</key> <string>22.214.171.124</string> <key>Java</key> <dict> <key>ClassPath</key> <string>../../ide/lib/ide-boot.jar</string> <key>JVMVersion</key> <string>1.6+</string> <key>MainClass</key> <string>oracle.ide.boot.Launcher</string> <key>VMOptions</key> <string>-Xmx512M -Xms256M -Xverify:none -XX:JavaPriority10_To_OSPriority=10 -XX:JavaPriority9_To_OSPriority=9 -XX:MaxPermSize=256M -Xbootclasspath/p:../lib/lwawt.jar -Dsun.awt.keepWorkingSetOnMinimize=true -Doracle.macosx.disableWebBrowser=true -Xdock:name=JDeveloper -Xdock:icon=JDeveloperIcons.icns -Xbootclasspath/a:../../rdbms/jlib/ojdi.jar -Dide.conf=../bin/jdev.conf -Dide.startingcwd=.</string> <key>WorkingDirectory</key> <string>$APP_PACKAGE/Contents/Resources/jdev/jdeveloper/jdev/bin</string> <key>Properties</key> <dict> <key>apple.awt.textantialiasing</key> <string>true</string> <key>apple.laf.useScreenMenuBar</key> <string>true</string> <key>apple.awt.antialiasing</key> <string>true</string> </dict> </dict> </dict> </plist>
- The above will fix the installation and JDeveloper will now start normally (you will also be able to use the Info.plist to adjust JVM arguments)