Ubiquiti Employee
Posts: 8,717
Registered: ‎01-28-2013
Kudos: 14205
Solutions: 594
Contributions: 20

Java 8 support notes for UniFi 3.2.7, 4.2.0 and beyond!

[ Edited ]


Microsoft Windows: The latest v3 release as of this update is 3.2.10. It will have a shortcut issue. It may have adoption issues too. The latest v4 release does not have either of these issues, so for new users or users looking for a quick fix, I recommend 4.6.6, found HERE.


Mac OS X (Yosemite/10.10.x, and later builds): Starting in 4.7.x, if you use standard U.S keyboard layout you can run the UniFi controller via the icon in the launcher. If you use U.S. international or other keyboard layouts, and you get errors running it from launcher icon then please use CLI method which is detailed below. 


Linux: May require you to update JAVA_HOME in the init script, depending on JRT used (i.e. openjdk, Oracle Java..)


Full support details below::


Hi all,


As of UniFI 3.2.7 and 4.2.0 we have native support for Java 8 (1.8). That means that on a fresh install you can use Java 8 and it will work. I thought I'd make a post about this as we've added support but there appear to be a few "snags", both on Microsoft Windows and Mac OS 10.10 (Yosemite), so I wanted to clarify what you may encounter.


On versions 3.2.5, 4.1.1 and all earlier releases would have an issue where the keystore was not generated when you had Java 1.8 installed as the default JRE. This only affected fresh installs. On these version you need Java 7 to be able to install the software properly. After you run it once and generate the keystore you could switch to Java 8. If you had 1.8 as the default before you need to uninstall UniFi, switch to JRE 7, install UniFi, run UniFi, then you can switch back to Java 8.


So on releases that support Java 8 there are 3 possible issues on Windows. Two of the issues are with controller startup, one is with new device discovery.


On Mac OS X 10.10 there is 1 issue, and it the resolution is documented below.


Microsoft Windows:  


Device discovery:

Currently with 3.2.7 and 3.2.10 you cannot reliably discover devices even on a L2 network. It will work fine on 4.6.0 (I did not test 4.5.2 at time of writing this). 


We have this resolved and it will be fixed in the release succeeding 3.2.10.


In the meantime you will have to either:

  • downgrade to Java 7
  • try L3 adoption (static DNS or DHCP option 43 preferred)
  • upgrade to 4.6.0**

**if upgrading to 4.6.0 please make a backup from 3.2.x first. This way you can always downgrade. Should note that included ap firmware in 4.6.0 is 3.2.7. If you want firmware to be 3.2.10, you need to download the Linux ZIP and merge the /dl folder with your existing controller, overwriting whatever files it asks about. Also note that there is a change in the API for custom/external portal**


Controller startup issues:

x64 users make sure you have both x86 and x64 versions of Java 8 installed (see manual download page HERE). If you do not you will get another error than what's detailed below.


Error #1: Fresh install of 3.2.7, 4.2.0 or later builds when Java 1.8 (Java 8) is the only JRE installed on the Windows system:

On Windows the desktop shortcut is "broken". Something like this:

2014-11-05 12_11_27-Missing Shortcut.png

You will get this error even though the path for the symlinks are defined in environmental variables. 


Error #2: If you have both Java 1.7 (Java 7) and Java 1.8 installed on the same Windows system, you may get an error similar to this:


If you have (or had) Java 7 installed then it may install executables into the C:\Windows\system32 directory. This issue occurs when those executables are there but the default JRE is set to Java 1.8. It errors out because it tries to initially open the UniFi controller with the Java 1.7 javaw.exe found in C:\Windows\system32 then starts to load it in the default JRE, which is Java 1.8 (causing the Java mismatch).


The solution is the same for both errors.


  • Right click on the shortcut and choose Properties.
  • If it asks you to Browse, click Cancel. If not, continue to the next step
  • Update the location for javaw.exe in the target line.

Originally it will say:

C:\Windows\system32\javaw.exe -jar "C:\Users\username\Ubiquiti UniFi\lib\ace.jar" ui


You want to change it to:

javaw.exe -jar "%USERPROFILE%\Ubiquiti UniFi\lib\ace.jar" ui

 If that doesn't work you can use:

"%PROGRAMDATA%\Oracle\Java\javapath\javaw.exe" -jar "%USERPROFILE%\Ubiquiti UniFi\lib\ace.jar" ui


We are only changing the start of the target, the path to javaw.exe, not the ending. If you copy and paste what I've put above, it will give you an error as it simply says username (which would need to be updated for your user profile).




Mac OS 10.10 (Yosemite)

So, first and foremost, in the future we plan to have Java bundled to alleviate Mac OS Java related issues.


For 3.2.10, 4.6.3 and subsequent builds you can properly run the controller from command line.


It requires that you install JRE as well as its matching JDK. The latest as of writing this update is 8u45. The JRE download is found HERE, JDK download is found HERE.


Once installed you start the controller via CLI with the following command: 

java -jar /Applications/ ui




I hope this helps alleviate some potential issues you may encounter. If you have any questions please start a thread about your issue.