With the recent ColdFusion releases, we have come across many queries regarding Java updates. The table below shows the default Java shipped with the supported versions.

 ColdFusion Version  Base Installer  Refreshed Installer
 ColdFusion 2016  1.8.0_72   NA
 ColdFusion 11  1.7.0_55   1.8 _25
 ColdFusion 10  1.6.0_29  1.7.0_15

 

Now, let us look at the supported Java versions for ColdFusion 2016,11 & 10.

Java Version  ColdFusion 2016  ColdFusion 11  ColdFusion 10
Java 1.8  All the updates  Update 3 and above  Update 14 and Above
Java 1.7  Not Supported  Update 2 and earlier  Update 8 and Above
Java 1.6  Not Supported  Not Supported  Update 7 and earlier

 

Once the support for a major version of Java is added, it also covers all the minor/sub versions.

 

Upgrading to Java 1.8:

  1. Download the latest version of Java from http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html. Please make sure that you download 64-bit Java for 64-bit ColdFusion and 32-bit Java for 32 bit ColdFusion.
  2. Run the installer to install Java.
  3. Take a backup of jvm.config(located at <cf_install_root>\cfusion\bin)
  4. To change from ColdFusion’s default Java, modify the Java home url in either jvm.config or in ColdFusion administrator (Settings ->Java and JVM -> Java virtual machine path).
  5. Restart ColdFusion after making the changes.
  6. To verify the update, log in to ColdFusion Administrator and see verify the newer Java version .

If you are using Web Services, please do the following:

  1. Take a backup of tools.jar from {cf_install_home}/cfusion/lib/
  2. Copy tools.jar from {JDK8_Home}/lib to {cf_install_home}/cfusion/lib/
  3. Clear the stubs from {cf_install_home}/cfusion/stubs/ to get the newly compiled classes.

 

Note: Any SSL certificates added to the previous JDK will also need to be re-added to the new JDK (cacerts) file.

You can use Java keytool tool located in Java\jre1.8.0_XX\bin to import the certificate.  You can use the below command:

keytool -import -alias name -keystore \Java\jre1.8.0_XX\lib\security\cacerts -file mycert.cer

 

Java upgrade issues and troubleshooting

  1. If you are unable to start ColdFusion after the Java update:
  • Check the location of Java home in jvm.config.
  • The Java auto-update modifies the Java install directory location, which causes failure to ColdFusion start. Disable the java auto upgrade.
  • Try starting ColdFusion from command line to see specific errors. If the error is "Error loading: C:\Program Files\Java\jdk1.X.X\jre\bin\server\jvm.dll", then copy the msvcr100.dll file to <cf_install_root>/cfusion/bin from {JDK8_Home}/bin (for Windows OS).
  1. After importing certificates, if you have issues related to SSL, then you need to enable debugging for SSL. Take a backup of jvm.config at \ColdFusion\cfusion\bin\ and add -Djavax.net.debug=all under the “Arguments to VM” in jvm.config. This would require a CF service restart. The argument would append the debugging info to the coldfusion-out.log at \ColdFusion\cfusion\logs\.

 

4 Comments to “Installing and troubleshooting Java updates in ColdFusion”

  1. Charlie Arehart
    Rahul, thanks for the post, and especially for some of the bonus tips you share on common problems people face when updating the JVM.

    Even so, I do think that most readers may still benefit from still more additional info.

    For instance, what path should they point to in step 4? and why it should point to the jre within the installed JDK folder? If they do add it manually in the jvm.config, why is it critical on Windows to change the path to use // or \ as separators instead of the default /?

    And why you should also change the jetty.lax if you use Solr (in CF9, 10, 11, or 2016) or the new CFHTMLtoPDF tag in CF11 or 2016)? Why if you have multiple instances, do you need to edit the jvm.config in each instance for CF10 and above? and more.

    I'm not meaning to cast stones. And while some of what I've just listed may seem obvious to some readers, I find that when it comes to changing your JVM, it pays to be as explicit as possible, since if you get this wrong there can be trouble (CF may not start, some code may not run, etc.). I have helped many people deal with those problems, as it seems perhaps you have too, given those bonus tips. :-)

    As such, I'll share that I offer lots more detail (for those who want it) on all the above I mention (and some of what you mention, and more) in a blog post I did in late 2014:

    http://www.carehart.org/blog/client/index.cfm/2014/12/11/help_I_updated_CFs_JVM_and_it_wont_start

    (It's as valid today as then, and I also point to other resources with more on changing the JVM, including a nice youtube video from Pete Freitag.)

    FWIW, the blog post arose from the previous Adobe blog post Elishia did on JVM versions supported (http://blogs.coldfusion.com/post.cfm/which-jdk-is-supported-with-coldfusion-9-10-and-11) again back in 2014.

    There, a commenter had complained that they tried to proceed with JVM updates and found that CF would not start. So I had started to write a comment there with the things they could have run into, and how to resolve them, and that's what led me to create that post.

    Hope that info there may help some readers who find this post and consider changing the JVM CF uses (which is of course generally a great idea for both security and jvm bug fix/functionality reasons).
  2. Paolo
    In my native version of CF11 I've the JVM version 1.7.0_51
  3. Charlie Arehart
    Paolo, that's an interesting point. Though that difference would be too significant, it brings up a related point. Sometimes Adobe HAS in fact come out with new installers which may well have different built-in Java versions than in the table above.

    For instance, when support for Windows 8 was added to CF10, they came out with a new installer, and that implemented Java 1.7 (contrary to what's stated above). It can be tough for anyone to keep track of the variants. :-)

    That said, you refer to CF11 a difference of seeing 1.7.0_51 vs Rahul's report of it being _55. I can confirm that my own version of CF11 shows its built-in JVM being _55 also. While there have been occasional new installers that might make such minor adjustments (for whatever reason), they are pretty rare in my observation.

    So first, are you getting this version info from the CF Admin (the "settings summary" or "system information" page)? And if so, are you confirming that same page shows that the "java home" field does point to the [coldfusion11\jre folder? If it does not, then someone changed your CF JVM and that's the version you're seeing.

    Second, as another test to confirm what you say, you could open to the command line on your machine, and go (cd) to that [coldfusion11]\jre\bin folder, and run a "java -version" command to see what it reports. (You could even use ".\java -version", to make sure it really runs the java in that specific directory, without question.)

    Let us know what you find. It could be interesting to track that there are indeed other base versions of Java that were included in various CF installers.
  4. Priyank
    Paolo, as Charlie mentioned that we refreshed the installer after we released update 3 for ColdFusion 11 and the new installer had update 3 built-in with JDK 1.8.0_25. The installer which you are using is the first installer that we released. On that installer, the JDK version that we shipped was 1.7.0_51.

    Please let us know in case you have any issue upgrading JDK on your server.

Leave a Comment

Leave this field empty: