A few things have changed when it comes to running SQL Developer on a Windows machine. In previous versions, the first thing you’d see when running SQL Developer would be a prompt asking for the location of Java.

Tell SQL Developer where it can find Java
Tell SQL Developer where it can find Java

Turns out, it’s hard for Java applications to run without Java.

On Macs and Linux/Unix environments, we don’t prompt for the location of the JDK. The OS tells us where it is. So why not do this for Windows too?

Well, for version 4.0, we’ve taken care of this.

The .EXE in the top SQL Developer directory does a few things when you run it in version 4.0:

  1. Is this machine 32 or 64 bit OS?
  2. Is Java here?
  3. Write the location of the JDK to the .conf file for future executions

So as long as this EXE can answer these questions successfully, you won’t see the old prompt for the JDK anymore. If it can’t, then it will ask you for some help. This will make getting SQL Developer up and running that much easier for Windows users 🙂

Now, for all time eternal, SQL Developer would look (for Windows) in the sqldeveloper.conf file to see where the JDK is installed and also where you could configure how the JVM runs with the appropriate set parameter flags.

In version 4.0, we no longer look in SQLDeveloper.conf for these specific Java flags and settings.

To accommodate shared Windows machines, we now look into the roaming profiles directory in the Application Data folder. Specifically for SQL Developer, it’s here:

Where we put the java settings for SQL Developer in version 4.0 on Windows
Where we put the java settings for SQL Developer in version 4.0 on Windows

Basically speaking, if you have 3 people sharing a computer, each of them can have their own settings for how to run SQL Developer.

If you open this ‘very well documented’ file, you’ll see the all-important line near the top:

Where is the Java?
Where is the Java?

If you upgrade your Java installation, you’ll need to update this file with the new location or install folder name.

A couple more notes

  • The 4.0 Windows download packages will be:
    1. Windows 32 and 64 bit
    2. Windows with 64 bit JDK (Server JRE)
  • We recommend you run Java 7 with SQL Developer 4

The Server JRE is a subset of the full JDK – but has everything we need to run SQL Developer. We’re making the Windows with Java download setup for 64 bit now as that’s the standard configuration for machines these days. This also includes Oracle SQL Developer Data Modeler.

thatjeffsmith
Author

I'm a Distinguished Product Manager at Oracle. My mission is to help you and your company be more efficient with our database tools.

103 Comments

  1. Avatar

    Hi Jeff
    Very informative article (as usual!)
    I have many, many Java versions installed on my PC – usually to satisfy the needs of other Oracle software being certified differently.
    I have been using JDK1.7.0.45 64bit with SQLDev 4.0.3 64bit for the past month. I have simply been ignoring the warning to upgrade JDK to 1.7.0.51 or later, but I have a niggling problem within SQL Developer which MOS cannot reproduce, so I am biting the bullet and upgrading to the latest JDK1.7 version for my PC, namely 1.7.0.71.
    All installed successfully and swimmingly well.
    Tried launching SQLDev and it still thinks I am on 1.7.0.45 (its still there, but so is 1.7.0.71).
    I took your advice and went looking in C:\Users\alawlor\AppData\Roaming\SQL Developer on my Win7 PC, but I cannot find any subfolder called 1.0.0.0.0 and a full search of the contents of my drive cannot find a file called product.conf?

    Am I thick or have I found an undocumented feature ?

    Thanks, Jeff

    Alan

    • Avatar

      Jeff
      Scrap that – I am thick.

      I was looking in C:\Users\alawlor\AppData\Roaming\SQL Developer
      and should have been looking in C:\Users\alawlor\AppData\Roaming\sqldeveloper

      Still do not know why a windows file search did not find product.conf, though, but that is not an Oracle problem.

      Thanks
      Alan

  2. Avatar

    I am using windows server 2003 to run SQLDeveloper 4. My ORACLE DB 12c requires higher version of SQLDeveloper to connect. it is good that your article mentioned product.conf is involved. It is bad that this information is nowhere to find other than here.

    • thatjeffsmith

      Agreed 1000% – and we FINALLY have that rectified in the latest release and going forward.

  3. Avatar
    Chuy Sanchez Reply

    I’m having a hard time with SQL Developer 4.0.3 setting up the OCI configuration. The last obstacle is “Error loading the native OCI library”

    The native OCI driver could not be loaded. The system propertyjava.library.path contains the entries from the environment variable PATH. Check it to verify that
    the expected native library directory C:\oracle\product\11.2.0\client_1\bin is present and precedes any other client installations.
    java.library.path = C:\Program Files\Java\jdk1.7.0_67\jre\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\oracle\product\11.2.0\client_1\bin;C:\Users\sc58467\Oracle\product\12.1.0\client_1\bin;C:\oracle\instantclient_11_2;…

    The thing is, java.library.path is supposed to get its value from PATH, however my PATH = C:\oracle\product\11.2.0\client_1\bin;C:\Users\sc58467\Oracle\product\12.1.0\client_1\bin;C:\oracle\instantclient_11_2;…

    I can’t find a way to eliminate the references to “C:\Program Files\Java\jdk1.7.0_67\jre\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;” from java.library.path.

    Any idea how to proceed from here?

    Thanks,

    • Avatar

      Hi Chuy,
      I had the same problem. Turns out I was using a 32-bit JDK, and a 64-bit native library on a 64-bit Windows OS. After upgrading to a 64-bit JDK and changing product.conf my OCI configuration passed.

  4. Avatar
    S Bradshaw Reply

    I need to create auto-deployment packages for both 32 and 64-bit. It looks like the 64-bit deployment will work since the jdk folder is included.
    Is there anyway to include the jdk folder for the 32bit so that I can setup an auto-extract file?

    • thatjeffsmith

      Yes, just install a 32 bit JDK. Then scoop up that directory, and embed it on your SQL Dev package for 32 bit Windows.

    • Avatar
      S Bradshaw

      Yeah I figured it out earlier- forgot to come back and update. Before having to install SQL Developer for people, I didn’t know what jdk, jre or this jse stuff was but I’m slowly learning!
      Thanks!

  5. Avatar

    Whatever happen to the standalone build that has the JDK/JRE bundled with it? No chance of having that back. Can’t get that portable bit trick working :(-

    • Avatar
      Newbie01

      Hi Jeff,

      Just want to check if I understand it correctly.

      Can I run the JDK Installer, then copy the whole directory that it installed to to where I unzip SQL Developer, un-install JDK and then run SQL Developer and tell it where I copy the JAVA directory to and it should all work alright?

      I believe from previous SQL Developer download, there is a with JRE and no JRE downloads. Now there is just the no JRE download 🙂

    • thatjeffsmith

      Yes, but why do you insist there is no download that includes the JDK? It’s the very first download listed, ‘Windows 64-bit – zip file includes the JDK 7’

  6. Avatar
    gil fermin Reply

    after extracting the sqldeveloper-4.0.2.15.21-x64.zip into c:\sqldeveloper64bit folder and i run sqldeveloper.exe it will launch an unknown app with 4 menus named GoTo, Tools, View and Window which just displays there and the Java flash window is stuck. Looks like the exe wont be be able to create the sqldeveloper folder in the Roaming folder to populate the product.conf with the java path.

    help……

  7. Avatar

    You can ignore the last post. For some reason, when I extracted it, and then moved the files around, it must not have been done with the extraction process. I ended up with an incomplete installation. I reextracted everything to c:\sqldeveloper directly and it started up fine. Chalk this up to some kind of user error, though I can’t believe I would have done that.

  8. Avatar

    After extracting the 4.0.2 version from OTN download (the one without the jdk), I tried to run the sqldeveloper.exe from the root, and nothing happens. I drop to DOS, run it, nothing happens. It was extracted to C:\sqldeveloper.

    The JDK (full) I have installed is 1.7.0_51. This is running under Windows 7 Pro SP1. I have a java_home defined, a jre_home defined, and java.exe is located in the path at C:\java7\bin.

    i was prompted to look at it based on the May/June issue of OTN for this year based on your article.

    Thanks for any hints, tips, etc.

    • thatjeffsmith

      Hey Eric, thanks for the note re: the article! Feedback from those types of posts are much lighter than something like this blog, so I’m never sure how they turn out…

  9. Avatar

    This with the roaming profile is OK. However, I chose a 1.6 JDK by mistake and the exe kept on presenting a dialog, that I should change the conf in sqldeveloper/bin/sqldeveloper.conf. Frustrating when it doesn’t work …

  10. Avatar

    When I start SQL Developer, I see one more sqlseveloper blank console opening along with editable Oracle SQL Developer. I don’t understand why do I see 2 windows. If I close any of these two windows, the other gets closed. (No messages/logs/errors in the blank, black console window).

    Is there any setting to be changed to not display that other blank window?

    • thatjeffsmith

      Sounds like your desktop shortcut is pointing to the exe in the BIN directory. You want to run the sqldeveloper.exe in the root directory.

  11. Avatar

    I installed SQL Developer 4.02 and it is telling me that I am using java 1.70_25 when in reality I am using 1.70_55. I modified the sqldeveloper.conf to set the java home pointing to C:\Program Files\Java\jdk1.7.0_55 but I still get the warning message every time I start SQL Developer.
    Where else should I change the java home?

    Thanks

    • Avatar

      To add on to what Aldo was reporting, I got the same message, but the prompt was incorrect – telling me I needed to change “C:\dev\sqldeveloper4\sqldeveloper\bin\sqldeveloper.conf” (my installation folder) when in fact I needed to change “C:\Users\Kris\AppData\Roaming\sqldeveloper\1.0.0.0.0\product.conf”. Actually, I just deleted the latter file and sql developer recreated it.

  12. Avatar

    Thanks you. It works. In my computer the folder is hidden. Take me some time to figure it out. :>

  13. Avatar

    In prior version you could simply put SQL Developer on a USB stick and use it everywhere with your own settings.
    You only had to change AddVMOption -Dide.user.dir=? to the letter where Windows mouted it.

    With the new version you cannot do this, you have to start up at least once, then shut down and edit product.conf. And you are lucky if you don’t have to work on a restricted workplace where you are not allowed to change the Explorer settings so you cannot see the AppData folder.

    It should be an option to store the data in the user profile but not as default.

  14. Avatar

    This article helped me figure out why Data Modeler was utterly ignoring my environment configuration and its own supposed settings file, and I just wanted to say thanks.

    I have JDK 6 and 7 installed on my machine, and got the popup message requesting the JDK location. I pointed it to JDK 6 and got a subsequent popup stating that 6 is unsupported and that 7 is the minimum supported version. It told me I could continue as-is or update datamodeler\bin\datamodeler.conf and update the SetJavaHome property to point to a supported JDK.

    I updated the property to point to JDK 7, using both absolute and relative paths, and Data Modeler ignored it and continued to pop up a warning about using JDK 6. I verified my JAVA_HOME was set to JDK 7 and verified my PATH was pointing to JDK 7 by testing ‘java -version’ and ‘javac -version’ and they all reported 7 was in use, and STILL Data Modeler ignored all settings.

    At this point I realized it must have written the JDK location to a file somewhere. I reinstalled Data Modeler – still got the stupid popup.

    Then I found this post, and saw I had a directory for Data Modeler under “%USERPROFILE%\Application Data” (this is the path for XP, anyway), and deleted it. Launched Data Modeler again, and got the JDK prompt. I pointed it to JDK 7, and it was happy.

    Thanks for saving my sanity.

    • thatjeffsmith

      That message definitely needs updated to accurately reflect the location of the configuration for the JVM. Sorry it took you so long. Please don’t forget the release notes, help, forums, and of course MOS for next time you get stuck – and of course always feel free to reach out directly to me and I’ll do what I can.

  15. Avatar

    Is there a way to change the default of “AddVMOption -Xmx800m” in product.conf when it is generated for the first time?

    We have a shared windows machine with a large number of users and want the ability for the initial value to be much lower to control memory usage on the server. User then can increase if they run into specific issues.

    • thatjeffsmith

      You can use the launcher.sh script to make these changes, and you should also disable as many extensions as possible in Tools > Features to lower the memory footprint.

      The better answer: get enough memory on the server to make the application and the users happy – memory is cheap. People are not.

    • Avatar

      Hi Jeff,

      the hint for changing launcher.sh only works for Linux/Unix.

      For Windows, we had to “edit” the files launcher.dll and launcher64.dll, where the default values are hard coded in it.

      Why are such initial values not available in an own configuration file, which can be normally edited?

  16. Avatar

    Actually, MacOSX can prompt you for the JDK home

    $ cd /Applications/SQLDeveloper.app/Contents/Resources/sqldeveloper

    $ bash ./sqldeveloper.sh

    Oracle SQL Developer
    Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.

    Type the full pathname of a JDK installation (or Ctrl-C to quit), the path will be stored in /Users/yourname/.sqldeveloper/4.0.0/product.conf

    I entered

    /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home

    to work around problems when upgrading to jdk1.7.0_51

  17. Avatar

    Took a while to discover this magic as I managed to click yes on the location for the 1.6 jdk. Then every time I started sqldeveloper it said that I had the wrong version of java installed and told me to change these preferences in the sqldeveloper.conf file…

    Please update the error message to point to the correct location in the roaming profile.

    Installed version (4.0.0.13 Build MAIN_13.80)

    • thatjeffsmith

      It should be documented, and my blog is not the right place for that. I’ll see what I can do to make this more clear going forward. Sorry for poor experience Magnus, and thanks for bringing it to my attention.

  18. Avatar

    Despite changing location in sqldeveloper.conf, I cannot run easily sqldeveloper 64bit (on Windows 7 x64), I can always start it using directly sqldeveloperW.exe in the sqldeveloper/sqldeveloper/bin directory. When I succeed (sometimes) to apparently lauch the 64 bit version, the help.about windows shows always the 32bit version of java and jdk in java.home, changing the conf file doesn’t change anything. any idea?

    • thatjeffsmith

      Do you mean the product.conf – we don’t read sqldeveloper.conf for the JVM settings anymore, including the location of the JDK.

      What do you see if you run sqldeveloper64.exe? You should get a command window console opening that would show any fatal errors.

    • Avatar

      Sorry I wasn’t in the right directory for the product.conf file, evrything is fine now.
      sorry to disturb you, thanks you

  19. Avatar

    Would it be possible to change the JDK path from GUI preferences, or the only way is to modify the .conf file? Also, did something change about SQLDeveloper.conf for linux installations, or SQLDev still looks there?

  20. Avatar
    Pavel Trka Reply

    Maybe a little suggestion – the JDK directory will often change for people which follow the jdk_ jdk directory naming pattern. I would like SQL Developer to display that jdk location prompt if it is unable to locate the jdk in directory specified in product.conf and update it after user will point to new directory.

    • thatjeffsmith

      Probably not a bad idea.

      However, most people don’t update their java installs that frequently. That being said, we should make the tool smarter about what to do if it the location changes.

  21. Avatar

    Very timely article, as I just installed SQLDeveloper 4.0 and accidentally chose the 32 bit version of the JDK when prompted. I was looking everywhere in the sqldeveloper.conf file but low and behold the java_home parameter was missing. Now I can modify the product.conf file and point to the 64 bit JDK instead.

  22. Avatar

    Just a little question : why SQLDeveloper need jdk, and not only jre ?

    • Avatar

      Most of our analysts don’t use the Debugger, and we’d love it if SQL Developer could run on the JRE. It would save the headache of getting everyone repointed to the new JDK folder when Java updates itself (at least until Java moves to 1.8). Is the Debugger too integrated for a setting that would allow that?

    • thatjeffsmith

      How is your JDK updating itself?

      You can run SQL Developer 4.0 and higher with a Server JRE if you’d like. And yes, we’d have to refactor the tool to not have the debugger, so not a trivial change. It’s easier to just let folks grab the SQL Developer with the embedded JDKs and be done with it.

Write A Comment

RSS
Follow by Email
LinkedIn
Share