Java SE Embedded package for Synology NAS

There is a lot of good Java software, but it’s difficult to get Java running on a NAS. I decided to do something about that, mainly to pave the way for a Serviio package that didn’t require a huge guide to install. In compliance with the Oracle EULA the Java binaries cannot be redistributed, so this package looks for the downloaded .tar.gz archive in the public shared folder on the NAS. The end user is required to register with Oracle to get the file, as you can see from the description below. I also added locale support to the underlying Linux since Java requires this for UTF-8 support when reading from the filesystem (DSM 4.3 later included this). Timezone support is also configured.

This package installs Java SE Embedded which is purposefully designed to run on low specification headless hardware. It should be noted that Synology Java Manager (only available on Intel products) is the full Java Runtime Environment, and consequently uses more RAM. By default you should use Java 8, unless the application you want to run specifically requires Java 7.

Please note that Oracle ceased maintaining Java 6 in 2012, so it should be considered a serious security vulnerability. The Java 6 package has been withdrawn from the package repository for this reason. If you need it to run a particular piece of software you may download it here for manual installation. Please also note that Oracle retired support for PowerPC CPUs following Java 8 Update 6, so the PowerPC package remains at that version.

Java Package



  • In Synology DSM’s Package Center, click Settings and add my package repository:
    Add Package Repository
  • The repository will push its certificate automatically to the NAS, which is used to validate package integrity. Set the Trust Level to Synology Inc. and trusted publishers:
    Trust Level
  • Now browse the Community section in Package Center to install a Java SE Embedded package:
    The repository only displays packages which are compatible with your specific model of NAS. If you don’t see Java Embedded in the list, then either your NAS model or your DSM version are not supported at this time.
  • If you have a multi-bay NAS, use the Shared Folder control panel to create a shared folder called public (it must be all lower case). On single bay models this is created by default. Assign it with Read/Write privileges for everyone.
  • Register with Oracle and download the appropriate version of Java SE Embedded for your CPU architecture and save in the public shared folder on your NAS. Note that to get any version of Java older than the current one you will need to follow the Oracle Java SE Embedded Downloads Archive link on that page. If in doubt, attempt to install the package first, and the error message will tell you which specific download version is required.
  • If you have trouble getting the Java archive recognised, try downloading it with a different web browser. Some browsers try to help by uncompressing the file, or renaming it without warning. I have tried to code around most of these behaviours. Use Firefox if all else fails.

Package scripts

For information, here are the package scripts so you can see what it’s going to do. You can get more information about how packages work by reading the Synology 3rd Party Developer Guide.


#--------JAVA installer script
#--------package maintained at

COMMENT="# Synology Java Package"
SYNO_CPU_ARCH="`uname -m`"
[ "`echo ${SYNO_CPU_ARCH} | cut -c1-7`" == "armv5te" ] && SYNO_CPU_ARCH="armv5tel"
#--------Synology switched Armada 370 systems from SoftFP to HardFP EABI for DSM 6.0
[ "${SYNOPKG_DSM_ARCH}" == "armada370" ] && [ ${SYNOPKG_DSM_VERSION_MAJOR} -gt 5 ] && SYNO_CPU_ARCH="armv7l-hflt"
[ "${SYNOPKG_DSM_ARCH}" == "armada375" ] && SYNO_CPU_ARCH="armv7l-hflt"
[ "${SYNOPKG_DSM_ARCH}" == "armada38x" ] && SYNO_CPU_ARCH="armv7l-hlft"
[ "${SYNOPKG_DSM_ARCH}" == "comcerto2k" ] && SYNO_CPU_ARCH="armv7l-hflt"
[ "${SYNOPKG_DSM_ARCH}" == "alpine" ] && SYNO_CPU_ARCH="armv7l-hflt"
[ "${SYNOPKG_DSM_ARCH}" == "alpine4k" ] && SYNO_CPU_ARCH="armv7l-hflt"
[ "${SYNOPKG_DSM_ARCH}" == "monaco" ] && SYNO_CPU_ARCH="armv7l-hflt"
[ "${SYNOPKG_DSM_ARCH}" == "rtd1296" ] && SYNO_CPU_ARCH="armv7l-hflt"
[ "${SYNO_CPU_ARCH}" == "x86_64" ] && SYNO_CPU_ARCH="i686"

if [ "${SYNOPKG_PKGNAME}" == "java6" ]; then
  if [ "`echo ${SYNO_CPU_ARCH} | cut -c1-7`" == "armv5te" ]; then
    JAVA_BUILD="ARMv5 Linux - Headless EABI"
  elif [ "${SYNO_CPU_ARCH}" == "armv7l" ]; then
    JAVA_BUILD="ARMv6/7 Linux - Headless EABI, VFP, SoftFP ABI, Little Endian"
  elif [ "${SYNO_CPU_ARCH}" == "i686" ]; then
    JAVA_BUILD="x86 Linux Small Footprint - Headless"
  elif [ "${SYNO_CPU_ARCH}" == "ppc" ]; then
    JAVA_BUILD="Power Architecture Linux - Headless - e500v2 core"

elif [ "${SYNOPKG_PKGNAME}" == "java7" ]; then
  if [ "${SYNO_CPU_ARCH}" == "armv5tel" ]; then
    JAVA_BUILD="ARMv5 Linux - Headless EABI, SoftFP ABI, Little Endian"
  elif [ "${SYNO_CPU_ARCH}" == "armv7l" ]; then
    JAVA_BUILD="ARMv6/7 Linux - Headless - Client Compiler EABI, VFP, SoftFP ABI, Little Endian"
  elif [ "${SYNO_CPU_ARCH}" == "armv7l-hflt" ]; then
    JAVA_BUILD="ARMv6/7 Linux - Headless - Client Compiler EABI, VFP, HardFP ABI, Little Endian"
  elif [ "${SYNO_CPU_ARCH}" == "i686" ]; then
    JAVA_BUILD="x86 Linux Small Footprint - Headless"  
  elif [ "${SYNO_CPU_ARCH}" == "ppc" ]; then
    JAVA_BUILD="Power Architecture Linux - Headless - e500v2 with double-precision SPE Floating Point Unit"

elif [ "${SYNOPKG_PKGNAME}" == "java8" ]; then
  if [ "${SYNO_CPU_ARCH}" == "armv5tel" ]; then
    JAVA_BUILD="ARMv5/ARMv6/ARMv7 Linux - SoftFP ABI, Little Endian 2"
  elif [ "${SYNO_CPU_ARCH}" == "armv7l" ]; then
    JAVA_BUILD="ARMv5/ARMv6/ARMv7 Linux - SoftFP ABI, Little Endian 2"
  elif [ "${SYNO_CPU_ARCH}" == "armv7l-hflt" ]; then
    JAVA_BUILD="ARMv6/ARMv7 Linux - VFP, HardFP ABI, Little Endian 1"
  elif [ "${SYNO_CPU_ARCH}" == "aarch64" ]; then
    JAVA_BUILD="Linux ARM 64 Hard Float ABI"
  elif [ "${SYNO_CPU_ARCH}" == "i686" ]; then
    JAVA_BUILD="x86 Linux Small Footprint - Headless"
  elif [ "${SYNO_CPU_ARCH}" == "ppc" ]; then
    #Oracle have discontinued Java 8 for PowerPC after update 6
    JAVA_BUILD="Power Architecture Linux - Headless - e500v2 with double-precision SPE Floating Point Unit"

JAVA_BINARY=`echo ${JAVA_BINARY} | cut -f1 -d'.'`
PUBLIC_FOLDER="`synoshare --get public | sed -r "/Path/!d;s/^.*\[(.*)\].*$/\1/"`"
TEMP_FOLDER="`find / -maxdepth 2 -path '/volume?/@tmp' | head -n 1`"
NATIVE_BINS_FILE="`echo ${NATIVE_BINS_URL} | sed -r "s%^.*/(.*)%\1%"`"
#DSM versions older than 4.3 need locale support adding, don't download unless needed
[ ! -e /usr/bin/locale ] && INSTALL_FILES="${NATIVE_BINS_URL}"
source /etc/profile

preinst ()
  synoshare -get public > /dev/null || (
    echo "A shared folder called 'public' could not be found - note this name is case-sensitive. " >> $SYNOPKG_TEMP_LOGFILE
    echo "Please create this using the Shared Folder DSM Control Panel and try again." >> $SYNOPKG_TEMP_LOGFILE
    exit 1


  if [ -n "${JAVA_HOME}" ]; then
    echo "It seems from /etc/profile that a Java Runtime is already installed at ${JAVA_HOME}. Uninstall it and try again." >> $SYNOPKG_TEMP_LOGFILE
    exit 1
  [ -f ${PUBLIC_FOLDER}/${JAVA_BINARY}.tar.tar ] && JAVA_BINARY_FOUND=true
  if [ -z ${JAVA_BINARY_FOUND} ]; then
    echo "Java binary bundle not found. " >> $SYNOPKG_TEMP_LOGFILE
    echo "I was expecting the file ${PUBLIC_FOLDER}/${JAVA_BINARY}.tar.gz. " >> $SYNOPKG_TEMP_LOGFILE
    echo "Please agree to the Oracle licence at ${DOWNLOAD_URL}, then download the '${JAVA_BUILD}' package" >> $SYNOPKG_TEMP_LOGFILE
    echo "and place it in the 'public' shared folder on your NAS. This download cannot be automated even if " >> $SYNOPKG_TEMP_LOGFILE
    echo "displaying a package EULA could potentially cover the legal aspect, because files hosted on Oracle's " >> $SYNOPKG_TEMP_LOGFILE
    echo "server are protected by a session cookie requiring a JavaScript enabled browser." >> $SYNOPKG_TEMP_LOGFILE
    exit 1

  if [ "${WIZARD_JCE_UL}" == "true" ]; then
    if [ ! -f ${PUBLIC_FOLDER}/${JCE_BINARY} ]; then
      echo "JCE Unlimited Strength binary bundle not found. " >> $SYNOPKG_TEMP_LOGFILE
      echo "I was expecting the file ${PUBLIC_FOLDER}/${JCE_BINARY} " >> $SYNOPKG_TEMP_LOGFILE
      echo "Please agree to the Oracle licence at ${JCE_URL}, then download the Unlimited Strength Jurisdiction Policy Files zip file " >> $SYNOPKG_TEMP_LOGFILE
      echo "and place it in the 'public' shared folder on your NAS. " >> $SYNOPKG_TEMP_LOGFILE
      exit 1

    WGET_FILENAME="`echo ${WGET_URL} | sed -r "s%^.*/(.*)%\1%"`"
    wget ${WGET_URL}
    if [[ $? != 0 ]]; then
      if [ -d ${PUBLIC_FOLDER} ] && [ -f ${PUBLIC_FOLDER}/${WGET_FILENAME} ]; then
        echo "There was a problem downloading ${WGET_FILENAME} from the official download link, " >> $SYNOPKG_TEMP_LOGFILE
        echo "which was \"${WGET_URL}\" " >> $SYNOPKG_TEMP_LOGFILE
        echo "Alternatively, you may download this file manually and place it in the 'public' shared folder. " >> $SYNOPKG_TEMP_LOGFILE
        exit 1
  exit 0

postinst ()
  #ldd tool is very useful but not included in DSM
  if [ ! -e /usr/local/bin/ldd ]; then
    mkdir -p /usr/local/bin
    cp ${SYNOPKG_PKGDEST}/tools/ldd-${SYNO_CPU_ARCH} /usr/local/bin/ldd

  #extract native binaries if needed
  if [ -e ${TEMP_FOLDER}/${NATIVE_BINS_FILE} ]; then
    #older DSM tar uses different command line switch for xz archives

  #extract Java (Web browsers love to interfere with .tar.gz files)
  if [ -f ${JAVA_BINARY}.tar.gz ]; then
    #Firefox seems to be the only browser that leaves it alone
    tar xzf ${JAVA_BINARY}.tar.gz
  elif [ -f ${JAVA_BINARY}.gz ]; then
    tar xzf ${JAVA_BINARY}.gz
  elif [ -f ${JAVA_BINARY}.tar ]; then
    tar xf ${JAVA_BINARY}.tar
  elif [ -f ${JAVA_BINARY}.tar.tar ]; then
    #Internet Explorer
    tar xzf ${JAVA_BINARY}.tar.tar

  #install Java
  if [ "${EXTRACTED_FOLDER}" != "${EXTRACTED_FOLDER/jdk/}" ]; then

  #install unlimited crypto policy files if requested
  if [ "${WIZARD_JCE_UL}" == "true" ]; then
    if [ -e /usr/bin/7z ]; then
      7z x ${JCE_BINARY} > /dev/null 2>&1
      unzip ${JCE_BINARY} 
    mv ${JCE_FOLDER}/* ${JRE_PATH}/lib/security
    rmdir ${JCE_FOLDER}

  #change owner of folder tree
  chown -R root:root ${SYNOPKG_PKGDEST}

  echo "NOTE - This package does *not* start and stop like other packages. " >> $SYNOPKG_TEMP_LOGFILE
  echo "Java is correctly installed if you can see the runtime and HotSpot version numbers, " >> $SYNOPKG_TEMP_LOGFILE
  echo "and locale information in the package Log tab." >> $SYNOPKG_TEMP_LOGFILE
  exit 0

preuninst ()
  exit 0

postuninst ()
  #clean up profile mods
  sed -i "/${COMMENT}/d" /etc/profile
  sed -i "/${COMMENT}/d" /root/.profile

  #leave locale support in place on older DSM versions - too risky to delete system binaries
  exit 0


JRE_PATH="`find /var/packages/${SYNOPKG_PKGNAME}/target/ -name jre`"
COMMENT="# Synology Java Package"
#set the current timezone for Java so that log timestamps are accurate, modern timezone names so DST works
SYNO_TZ=`cat /etc/synoinfo.conf | grep timezone | cut -f2 -d'"'`
#fix for DST time in DSM 5.2 thanks to MinimServer Syno package author
[ -e /usr/share/zoneinfo/Timezone/synotztable.json ] \
 && SYNO_TZ=`jq ".${SYNO_TZ} | .nameInTZDB" /usr/share/zoneinfo/Timezone/synotztable.json | sed -e "s/\"//g"` \
 || SYNO_TZ=`grep "^${SYNO_TZ}" /usr/share/zoneinfo/Timezone/tzname | sed -e "s/^.*= //"`

EnvCheck ()
#updates to DSM will reset these changes so check them each startup 
  #/etc/profile should contain 5 lines added by this package tagged with trailing comments
  COUNT=`grep -c "$COMMENT$" /etc/profile`
  if [ $COUNT != 5 ]; then

    #remove any existing mods
    sed -i "/${COMMENT}/d" /etc/profile

    #add required environment variables
    echo "PATH=\$PATH:${JRE_PATH}/bin ${COMMENT}" >> /etc/profile
    echo "JAVA_HOME=${JRE_PATH} ${COMMENT}" >> /etc/profile
    echo "CLASSPATH=.:${JRE_PATH}/lib ${COMMENT}" >> /etc/profile
    echo "LANG=en_US.utf8 ${COMMENT}" >> /etc/profile
    echo "export CLASSPATH JAVA_HOME LANG PATH ${COMMENT}" >> /etc/profile

  #/root/.profile should contain 3 lines added by this package tagged with trailing comments
  COUNT=`grep -c "$COMMENT$" /root/.profile`
  if [ $COUNT != 3 ]; then

    #remove any existing mods
    sed -i "/${COMMENT}/d" /root/.profile

    #add required environment variables
    echo "PATH=\$PATH:${JRE_PATH}/bin ${COMMENT}" >> /root/.profile
    echo "TZ='${SYNO_TZ}' ${COMMENT}" >> /root/.profile
    echo "export PATH TZ ${COMMENT}" >> /root/.profile

  #timezone needs setting each startup in case system value has changed
  sed -i "s%^TZ=.* ${COMMENT}%TZ='${SYNO_TZ}' ${COMMENT}%" /root/.profile

  #DSM versions older than 4.3 need locale support adding
  if [ ! -e /usr/bin/locale ]; then

    #build missing locale with UTF-8 support (don't think it matters which language)
    cp ${SYNOPKG_PKGDEST}/bin/* /usr/bin
    cp -R ${SYNOPKG_PKGDEST}/share/i18n /usr/share
    if [ ! -d /usr/lib/locale ]; then
      mkdir /usr/lib/locale
    localedef -c -f UTF-8 -i en_US en_US.utf8

  #DSM versions up to 5.1 are missing the zoneinfo timezone definitions which causes inaccurate log timestamps
  #thanks to CoolRaoul here:
  #to revert, just remove everything apart from 'Timezone' '' from /usr/share/zoneinfo
  if [ ! -e /usr/share/zoneinfo/Europe/London ]; then
    cp -R ${SYNOPKG_PKGDEST}/zoneinfo/* /usr/share/zoneinfo/


case $1 in
    source /etc/profile
    source /root/.profile

    #evidence of whether Java can start successfully is written to the package log
    java -version > ${SYNOPKG_PKGDEST}/output.log 2>&1
    echo >> ${SYNOPKG_PKGDEST}/output.log
    echo System installed locales: >> ${SYNOPKG_PKGDEST}/output.log
    locale -a >> ${SYNOPKG_PKGDEST}/output.log
    echo >> ${SYNOPKG_PKGDEST}/output.log
    echo JAVA_HOME=$JAVA_HOME >> ${SYNOPKG_PKGDEST}/output.log
    echo TZ=$TZ >> ${SYNOPKG_PKGDEST}/output.log

    exit 0

    exit 0

    source /etc/profile
    source /root/.profile
    if [ -e "${JAVA_HOME}/bin/java" ]; then
      exit 0
      exit 1

    echo "${SYNOPKG_PKGDEST}/output.log"
    exit 0



    "step_title": "Java Cryptography Strength Selection",
    "items": [
        "type": "singleselect",
        "desc": "Please select Java Cryptographic Extension policy:",
        "subitems": [
            "key": "WIZARD_JCE_STD",
            "desc": "Default Strong JCE policy - limited to AES-128 encryption",
            "defaultValue": true
            "key": "WIZARD_JCE_UL",
            "desc": "Unlimited Strength JCE policy - not permitted in some jurisdictions, see Oracle documentation",
            "defaultValue": false


  • 0047 14/May/18 – Updated to Java 8u171
  • 0046 20/Feb/18 – Updated to Java 8u161, experimental aarch64 support
  • 0045 30/Oct/17 – Updated to Java 8u151, added support for new CPUs in x17 and x18 models
  • 0044 02/Aug/17 – Updated to Java 8u144
  • 0043 21/Jan/17 – Updated to Java 8u121
  • 0042 07/Jan/17 – Updated to Java 8u111, fixed Armada 370/XP systems running DSM 6.0 which had switched from soft to hard float ABI
  • 0041 25/Jul/16 – Added support for unlimited strength cryptography (default is strong)
  • 0040 20/Jul/16 – Updated to Java 8u101
  • 0039 26/Apr/16 – Updated to Java 8u91
  • 0038 24/Mar/16 – Updated to Java 8u77
  • 0037 07/Feb/16 – Updated to Java 8u73
  • 0036 26/Jan/16 – Updated to Java 8u71
  • 0035 14/Dec/15 – Updated to Java 8u65, added support for models DS716+ and DS216play
  • 0034 19/Aug/15 – Fixed timezone DST issue with DSM 5.2, added support for DS215+
  • 0033 07/Aug/15 – Updated to Java 8u51, PowerPC build remains at 8u6
  • 0032 13/Jul/15 – Fixed timezone issue with DSM 5.2, updated main blog post documentation
  • 0031 25/Jan/15 – Fixed issue with version 0030 for systems with more than one volume
  • 0030 21/Jan/15 – Improved temp folder detection, updated to Java 7u75 and Java 8u33 (Oracle did not publish a version for PowerPC)
  • 0029 25/Dec/14 – DSM timezone file is no longer overwritten, which had been prompting a malware alert in DSM 5.1 Security Advisor
  • 0028 20/Oct/14 – Updated to Java 7u71, added missing zoneinfo timezone definitions to fix inaccurate timestamps for non-GMT timezones (checked every startup), switched native binary archives from .tgz to .tar.xz format to reduce size
  • 0027 18/Oct/14 – Updated Java 8 to 8u6, added support for Mindspeed Comcerto 2000 CPU in DS414j for Java 7 and Java 8
  • 0026 24/Jun/14 – DSM updates will no longer break Java
  • 0025 31/May/14 – Updated to Java 7u60
  • 0024 31/May/14 – Updated to Java 7u55
  • 0023 27/May/14 – Added Java 8 support
  • 0022 30/Jan/14 – Updated to Java 7u51
  • 0021 15/Nov/13 – Locale support is no longer downloaded and added to DSM 4.3 or newer since it’s already present
  • 0020 30/Oct/13 – Added support for Intel Atom Evansport and Armada XP CPUs in new DSx14 products, removed Early Access JDK 8 support since it did not run on the Armada SoCs
  • 0019 17/Oct/13 – Updated to Java 7u45
  • 0018 11/Oct/13 – Updated to Java 7u40, and JDK8 Early Access b106
  • 0017 05/Jun/13 – For Armada370 CPU changed from ARMv7 Server JVM to Client JVM since the Server one turned out to be unstable. Added support for Early Access JDK 8 for Armada 370.
  • 0016 21/May/13 – Added Armada370 CPU support (DS213j)
  • 0015 18/Apr/13 – Updated to Java 7u21, Java 6 Embedded seems to be no longer maintained by Oracle
  • 0014 13/Feb/13 – Fixed metadata for DSM 4.2 Package Center
  • 013 13/Dec/12 – Updated to Java 6u38 and Java 7u10
  • 012 10/Dec/12 – Installer script fetches native binaries separately to reduce bandwidth on repo hosting
  • 011 Added support for Freescale QorIQ PowerPC CPUs used in some Synology x13 series products, PowerQUICC PowerPC processors in previous Synology generations with older glibc versions are not supported
  • 010 updated to Java 6u34 and Java 7u6
  • 009 corrected timezone bug for Atlantic and Pacific timezones which may have caused error messages when in fact the package had installed correctly
  • 008 unified the build scripts
  • 007 included the locale binaries to simplify installation, fixed environment variables for root user (inc. timezone with DST support), displayed Java version information and env vars in Log tab, incremented Java to latest versions 6u32 and 7u4, fixed detection of renamed .tar.gz archives downloaded by Google Chrome
  • 006 fixed path issue for root user on non-bootstrapped systems, updated info link to refer back to this page, and improved description text
  • 005 incremented JRE versions to match new releases from Oracle
  • 004 forced check for existence of ‘public’ shared folder
  • 003 fixed a stupid typo that stopped 002 from working :)
  • 002 rewrote scripts to be easier to maintain, and to allow for web browsers that untar or rename the Java and toolchain binary bundles as they’re saved
  • 001 23/Aug/11 – fixed package repo support, defined as a non-runnable service, prevented more than one JRE being installed, saved files into actual package folder rather than @appstore/java now that package names can be separate from Package Center display names
  • v3 initial spk release (I think!)

1,191 thoughts on “Java SE Embedded package for Synology NAS

  1. synolova

    using openhab here.
    had the same problem with 1 hour time difference in java applications compared to system.

    changed file

    SYNO_TZ=`grep “^${SYNO_TZ}” /usr/share/zoneinfo/Timezone/tzname | sed -e “s/^.*= //”`
    SYNO_TZ=`grep “^${SYNO_TZ}” /usr/share/zoneinfo/Timezone/tzlist | sed -e “s/^.*= //”`


    1. Darren


      I just uninstalled older Java SE version and followed your process to download and install the new ejdk-8u71-linux-arm-sflt.tar.gz version on my Synology DS212 (which runs DSM 5.2 Update 3).

      At the end of the installation process it said that the installation was successful and I can go ahead and select Run to run the service. It shows correctly in the installed packages section but has a status of Stopped. The only option available under the Action dropdown box is Uninstall.

      In the log, the top line says:
      /var/packages/java8/scripts/start-stop-status: /var/packages/java8/scripts/ line 28: java: not found

      And the last 2 lines in the log say:

      When I ran the install from Community with no file downloaded it said that it expected:
      So, I accepted the license details and downloaded ejdk-8u71-linux-arm-sflt.tar.gz and renamed it as ejdk-8u65-linux-arm-sflt.tar.gz

      When it produced the situation above, I uninstalled it, downloaded ejdk-8u65-linux-arm-sflt.tar.gz and tried to install it. It gave the same result. I originally tried these updates running DSM 5.2 Update 1 but later updated to DSM 5.1 Update 3 and repeated the install attempts with both files and got the same results.

      Can you help please?

      I uninstalled MinimServer and went to install the latest version but it complains that Java is not started correctly.


  2. francesco

    Hi and merry Christmas, i have tried to download the packages but my DSM station don’t recognize your address sourcing location, please can you help me to solve this problem? many thanks in advance.

  3. Jos

    Any change, you might include DS209+II with DSM4.2 for your package? Still a lot of people use this. The specs of this are still OK.

    1. patters Post author

      That model should already be supported by Java package. Does it not show in Package Center when you add the repo URL?
      Can you run “uname -a” from an SSH session and post the result?

      1. Jos

        The package does not show when the repository is added :(. Perhaps a DSM 4.2 issue? DSM 4.2 is the final DSM for the DS209+II although security updates are being done.

        Results from uname -a is:
        Linux DiskStation #3255 Mon Apr 27 16:48:33 CST 2015 ppc GNU/Linux synology_ppc853x_209+II

        I can work together and try to fix this.

      2. patters Post author

        Ah yes I forgot. PowerPC systems only got a new enough version of glibc to run Java at DSM 5.0 – so unfortunately your system isn’t supported.

  4. silverlightdesigner

    When attempting to install Java SE Embedded 7/8 via the Community section of the Synology Package Center the following error is displayed:

    Failed to install “Java SE Embedded 7/8”.
    Java binary bundle not found. ally cover the legal aspect, because files hosted on Oracle’s server are protected by a session cookie requiring a JavaScript enabled browser.

      1. Martin Eriksen

        Same problem for me, totally green on this, and tried folowing all instructions on your page???

      2. Martin Eriksen

        Fixed. Started by installing java manager from synology. Created a folder on the synology named public. Downloaded approiate java se (mine was ejdk-8u65-linux-arm-sflt.tar.gz). And uploaded that file to public folder.

  5. tbe2013

    I think DS209+II is not supported because of the old GLIBC version:
    “011 Added support for Freescale QorIQ PowerPC CPUs used in some Synology x13 series products, PowerQUICC PowerPC processors in previous Synology generations with older glibc versions are not supported” thats why it is not listed within PackageCenter.
    I have installed JAVA 7U21 from here
    but with this package it is not installed in the same directory. This gives problems for different programs i.e. MinimServer.

  6. PhilRami

    @Martin Eriksen Did you upload the compressed tar.gz as such on your “public” folder, or did you uncompressed it?

  7. PhilRami

    This is the file you have to download and put in a folder names at the root : edjk-8u65-linux-armv6-vfp-hflt.tar.gz
    Then, run the Java 8 installer again (you’ll find it in the community section)
    And finally install Serviio

  8. James

    I have installed the Java by uploading the package to public as instructed, but it doesn’t appear to have populated the JAVA_HOME= parameter in the log. This is stopping Serviio installing. Any idea how to overcome this?

    1. patters Post author

      Possibly you obtained the wrong download from Oracle. Try to install the package without a java file there and it will tell you which one is needed. If that doesn’t work – try to use Firefox for the download since it seems to be the only browser that doesn’t try to ungzip the archive.

      1. James

        The first time I tried to download I didn’t have a ‘public’ so it took me to the oracle site and showed me the one to get.
        I got this one ejdk-8u65-linux-armv6-vfp-hflt.tar.gz
        The other options are
        Should I try the others?

      2. James

        Got it working.
        Looks like my connection at work was too slow or something so it errored. Worked straight away at home.
        Thanks for your help

  9. James

    The one I got is the one it was looking for in the public directory, hence why I nabbed it.
    When I try to install, it creates a folder in the public directory, presumable to extract / install from

  10. SophieS

    Downloading with Chrome (latest 32 bit version on Win10) will rename ejdk-8u71-linux-i586.tar.gz, removing either the .tar or the .gz (sorry, I forget which). Will simply renaming back again to the full name as listed on the official Oracle Java page fix the problem ? Or is the file changed in other ways too ?

    Don’t worry, already downloading again with Firefox again, just curious ….

    Another things – anyone else notice hugely varying download speeds from Oracle’s Java site ? Downloaded from there on multiple computers in multiple countries, still, the speed might go from 1kb/s to 500kb/s and back again, in the same download, while other times staying fast and stable….

  11. Charles K.

    Hope “Patters” can help with this one. I currently have the DS-1512+ running the latest build of DM. Ever since this most recent upgrade of Crashplan, I can’t seem to get the Java SE to install. I have the “public” folder with full R/W permissions applied. I used Firefox to download the latest version of the Java SE and dropped the file into the public folder. All I ever get with I try to install from the Community option is “Failed to install Java SE”. Even if the folder is empty or I remove the public folder all together, it never prompts me for the “correct” version it’s wants me to download from Oracle. I spent hours trying to get this to work following all your instructions and nothing helps. I’ve always been able to ride along with all the updates and changes with Crashplan and Java and get them working until now. I’m at a loss so any help would be greatly appreciated.

      1. Charles K.

        How can I access those log messages stored on the Diskstation so I can try what you mention above?

  12. James

    Hi Patters,

    I’m attempting to install the Java module on a DS212j (Marvell Kirkwood 88F6281) 1.2Ghz with 256MB of RAM, running DSM 5.2 update 3, I’ve added your repository and can confirm its picking up the link as have visibility of the ‘SANE’ App, however the Java installer is not listed, please advise if this hardware supports Java via the installer or if I can install manually, FYI I’m attempting to install Minecraft Sever that requires Java.
    Cheers, James

  13. Nick

    Installing on Sinology DS413j. Accepted Oracle EULA and downloaded JRE. App Center complained it was expecting ejdk-8u71 . . . instead of 8u73. I finally figured out that renaming the fo=ile to the expected name allowed App Center to install. But it is at STOPPED status, and seems to want more EULA acceptance? I cannot see where to start the service. Minim server will not install until JRE 8 is perfectly happy. Sad. I have had the NAS for two years, and always run out of time before I can resolve.

  14. Bastian

    Hi Patters, first I wanna say thank you for your great work here! I want to upgrade the Java SE Embedded 8 on my Syno DS213+ with a FREESCALE QorIQ P1022 CPU. My problem is, that I can not find the corresponding Java package on – installed version is 1.8.0_6-0032 – I tried to find a long time now but may be I am to … :D Can somebody help me out? thank you in advance

      1. patters Post author

        As I wrote on this page at the top – “Please also note that Oracle retired support for PowerPC CPUs following Java 8 Update 6, so the PowerPC package remains at that version”
        The package even gives you the filename if you try to install it. Clue: it’s version 8u6.

  15. Rob

    I’m attempting to load Java onto a Synology DS214 Play – I downloaded ejdk-8u73-linux-i586.tar.gz and the installation proceeded but, like others, the service is stopped and I have no option to start it.

    Any help would be greatly appreciated.

  16. BJ

    Hi There.
    Great work with the Java Package btw. Works great. Thanks.

    I have a problem with JAVA_HOME , Timezone and locale getting JDownLoader to run on my Syno NAS DS213j.
    Your JAVA installs fine and reports JAVA_HOME, TZ … fine in the Package log.
    But when I try to start JD in a Start-Stop script, the vars are not set. JD works fine when I start it with full path like:

    nohup /volume1/@appstore/java8/ejdk1.8.0_73/linux_arm_sflt/jre/bin/java -Djava.awt.headless=true -jar /var/services/jdownloader/JDownloader.jar 2>&1 &

    So I placed the “” in /usr/local/etc/rc.d/ and it looks like this at the moment:

    # Startup script for jdownloader2
    # Something like JAVA_HOME=/volume1/@appstore/java8/ejdk1.8.0_65/linux_arm_sflt/jre should be set, but is not
    start() {
    sleep 1
    nohup /volume1/@appstore/java8/ejdk1.8.0_73/linux_arm_sflt/jre/bin/java -Djava.awt.headless=true -jar /var/services/jdownloader/JDownloader.jar 2>&1 &
    # write pidfile
    echo $! > $PIDFILE
    #echo $! .. JAVA_HOME-$JAVA_HOME- PATH-$PATH- > $PIDFILE.j
    stop() {
    [ -f ${PIDFILE} ] && kill `cat ${PIDFILE}`
    # remove pidfile
    rm -f $PIDFILE
    pkill -f -n JDownloader
    case “$1” in
    sleep 1
    echo “Usage: $0 (start|stop|restart)”
    exit 1
    # End

    This is working so far, but I have to adapt the path each time I have a Java update. My Linux knowHow is ok but not deep, so I might be dooing something generally wrong here.
    Could you tell me why I can’t get the sys vars in the startup script environment and how I should do it right?

    1. patters Post author

      You probably need:
      source /etc/profile
      …to get the environment variables. Maybe it hasn’t been loaded at that point in the startup process.

      1. BJ

        Great. Thanks. That did the trick. Now locale settings also work. Especially important when using the unpacking in JD with local chars in the filenames.

  17. John MacDowall

    I’m installing java 8 on a DS413. I followed ALL the directions. Found and downloaded the bit on, as advised in the error message, into /public. Ran the installer, again, successfully. Now my package options are “Run” or “Uninstall” Run tells me that java is not found. I can’t find it in /bin either. /etc/profile has comments for java environmental values.


  18. Luke

    I can no longer update the Java 8 package without uninstalling and reinstalling. DSM downloads and starts the update process, then pops up a message that the package can’t be updated unless it is first uninstalled. I can’t remember how long it’s been since I’ve been able to upgrade in-place, perhaps since I moved from Java 7 to 8.

  19. Bloch Robert

    Hello, i have DS414 /Dsm 6 / serviio 1.6 and get many Java error
    With Dsm 5.2 und serviio 1.5.2 works perfekt
    On my ds112 with 1.6 und Dsm6 no Problem and User the Same Files as DS414
    Can You help me Please.

  20. billerr

    DSM 6.0 now includes an official Java 8 package. Do you know if this is a proper substitute for your package (i.e. will Crashplan work)?

    1. Robert

      Hello, i tryed to install Jva from synology an it open a window
      Java 8
      Installation Staus – nicht installed
      java instalation
      a he wont Java Linux version ARM v6/v7 Hard Float ABI
      bu it is only “Soft Float” and a demo with Hard Float
      i dont know how
      what is the problem on D414 the Armada xp ?
      on my ds112 are the same files and it works

  21. bertxl

    I’ve just upgraded the java package to 8u77 following the instructions but it does not start this time. At the end of the installation, I get the message that the installation was successfull and that the package womm not be behavingl ike a normal one etc. but the status stays Stopped and the logfile contains following line:
    /var/packages/kava8/scripts/ line 28: java: not found


    I have no idea why it doesn’t work this time. I have done many times before, and it never failed.

    1. bertxl

      I noticed that the issue has popped up before with Java6 and 7 but no solution was really posted. Some more details about my configuration. I used ejdk-8u77-linux-i586.tar.gz which I put in my public folder on my DS1513+. I still have DSM 5.1 because 6.0 refuses to upgrade because of the Plex package.
      I do need Java to run my Crashplan configuration, which is currently also broken…

  22. bertxl

    Some more info: I just tried to install Java7 and I got the same issue with ejre-7u75-fcs-b13-linux-i586-headless-18_dec_2014.tar.gz
    It looks like both files got installed in my public folder instead of the final destination… I have no idea how to fix this..

    1. bertxl

      I haven’t found a fix for my issue with the JRE8… but I have found a fix for the JAVA problem for Crashplan :-)
      I did the upgrade to DSM 6.0 (uninstalled Plex package and reinstalled after the upgrade). The Java SE Embedded packages still do not work after the upgrade, I still get a similar error. But the good news is that DSM 6.0 contains it’s own JAVA packages. I have installed the JAVA8 package and Crashplan now seems to work without the Java SE Embedded package.
      I also read a comment in another forum that the new version of CP has it’s own Java runtime, so I’m not sure what causes CP to run without this package but I’m glad it does….

  23. hans

    I fixed the error on installation “because files hosted on Oracle’s server are protected by a session cookie requiring a JavaScript enabled browser” and now understand what Martin Eriksen meant :) My NAS is a DS214play running DSM 5.2-5644 which did *not* have a public folder out of the box.

    Use FileStation to create a new shared folder called “public”. Put installation file (in my case ejdk-8u77-linux-i586.tar.gz) into this folder. Restart the Java SE Embedded installation from Community Section.

    The script fails to install Java if the *shared* folder “public” does not exist. The script line that uses “synoshare –get public” in order to pull the source path fails because it results in
    Lastest SynoErr=[share_db_get.c:70]
    SYNOShareGet failed. synoerr=[0x1400]

    Hope this helps.

    Good luck everyone and a big thank you for providing this script.

  24. Joe

    Just checking in on the Crashplan 4.6 upgrade. Always makes me nervous when my backups aren’t running. Thanks!!!!!!

  25. Peter

    It seems that Intel is fine and for ARM there is a workaround but what about Freescale? I have a DS413 with a freescale QorIQ processor. Any thoughts on this?

  26. RogerW

    Clueless amateur here, just trying to get Crashplan working again. I did it a few years ago, got it running and it was perfect for a long time. Then I foolishly said yes to upgrades and now I’m stuck. I have installed:
    Synology DS212J
    Marvell Kirkwood 88fg281 processor
    DSM 6.0-7321
    Java SE Embedded 8 from this site
    ejdk-8u77-linux-arm-sflt.tar.gz from Oracle site

    Java 8 appears to be installed and running. Crashplan will run for a short while when freshly reinstalled but then stops. Attempts to restart fail, the status goes from stopped to starting back to stopped with no error of any kind shown in anyplace I know to look. I also tried running with Java 7, same story.

    Any help would be greatly appreciated, this is my onsite backup for five computers and it’s down.

  27. Tim Wright

    Oracle have updated fre 8 again (ejdk-8u91-linux-i586.tar.gz). Frustratingly, I can’t download
    update 77 from the archive, because they screwed up the link. Are there plans to support the latest update?

    Thanks for all the hard work that you put into this!

  28. Yosh

    Hello, cant downlode 8u77 on oracle website, url is wrong on their side.
    They also update their package to 8u91.
    For a first time install, can you upgrade to 8u91 ?

  29. senor

    error meesage tells me about ejdk-8u77-linux-i586.tar.gz which can’t be retrieve because of oracles wrong url to this package.

    is it possible to install the latest instead (currently 8u91)?

  30. mussashi


    Could you fix/update an installer please.
    You are expecting: ejdk-8u-77-linux-i586.tar.gz (unfortunatelly not available on oracle site /even in archive/).
    Now a days ejdk-8u-91-linux-i586.tar.gz is last release.

    Thanks in advance.

  31. Monte

    I’ve problems with ejdk-8u77-linux-arm-sflt.tar on my DS214+ and would like to go back to 8u73. Where can I find your package for the use with 8u73?

  32. Monte

    I’ve problems using 8u77. I like to go back to 8u73 but I can’t find a place to download your old Synology package wich is looking for ejdk-8u77-linux-arm-sflt.tar. Can you help me?

  33. Markus

    Just wanted to update to version 77 … unfortuntaly the one on the website is 91 already – 77 seems to be gone? When I simply rename the file to the 77 version thd installer will run but Java will not start.

      1. Gonzalo Díaz Lozano

        I tried the link but this happens:

        In order to download products from Oracle Technology Network you must agree to the OTN license terms.

        Be sure that…
        Your browser has “cookies” and JavaScript enabled.
        You clicked on “Accept License” for the product you wish to download.
        You attempt the download within 30 minutes of accepting the license.

    1. Gedeele

      I have same problem, in the Oracle page you can download older versions but the 77 page doesnt work, 73 71 does works, what we can do?

    2. Juan

      Same issue. 8u77 link in the Oracle archive leads to a dead link.I think they need to update the installer to accept 8u91.

    3. Harley

      Same here the website link is either broken or Oracle has taken this version offline.

      Any thoughts how to put on a different version or get copy of this version somewhere else?

    4. Onno

      I worked around that by renaming the directory /public/ejdk1.8.0_91 to ejdk1.8.0_77 and the reinstalling again. It now installs but uses the directory to install to and also show up in the package manager as Only when you look at the log you see that it’s actually
      I suppose you can get it to install properly by editing the scripts, but I didn’t try that.

  34. mcgilroy


    thx for your great work. just want to second that version 77 is unavailable and oracle only has v91 available.

  35. neklothekloth

    Same as Markus: 77 is not available anymore on Oracle site. The archive page mentions it, but the link is DEAD… impossible to download it.

    … which means Crashplan is down for the moment.

    Any idea where else this package can be found ?

    Thank you

  36. nekloth

    Same as Markus: 77 is not available anymore on Oracle site. The archive page mentions it, but the link is DEAD… impossible to download it.

    … which means Crashplan is down for the moment.

    Any idea where else this package can be found ?

    Thank you

    1. nekloth

      Thank you for the upgrade !
      Now, Java is installed (u91). however, impossible to strt CrashPlan. in log : /var/packages/CrashPlan/scripts/ line 167: /volume1/@appstore/CrashPlan/jre/bin/java: cannot execute binary file: Exec format error

      Any idea?

  37. Gedeele

    Hi, i tried to download ejdk-8u73-linux-arm-sflt.tar.gz but the oracle page of the link is not working, do you have it?
    Or maybe i can change de name of another file? I tried with the 8u91 but it install javafirst but can ejecute the Serviio instalation after.

  38. badboyxx

    Since I have my Synology NAS I use Java SE embedded and everything worked always fine. Since the update to DSM6, I can’t start it no more. I don’t know what went wrong. When I start it, after a few seconds it stops automatically.
    I copied the protocoll, maybe it can help.

    /var/packages/java8/scripts/ line 74: java: command not found

    System installed locales:


    I’m using DS214+ and installed ejdk-8u73-linux-arm-sflt.tar.gz. 8u77 is at the moment offline.

    1. Michael

      Same issue here. It just doesn’t start and same error in log. Any help would be appreciated.

  39. Alexander Selkirk

    Hey Patters,

    Thanks so much for all your work! Oracle have bumped their ARM version to 8u_91 and, strangely, the 8u_77 page (which matches your installer) throws a 404. Any chance you could update things?


  40. Mickey

    could plz update your package to current java 8.91 ?
    your expected version 8.77 is not available at oracles archive (error 404).

    THX !

      1. Bert

        I have the Synology Java8 package installed and I wonder if that will upgrade automatically. Your Crashplan package and CP itself work as they have always done, but now without the community Java packages..

  41. SophieS

    Hi I’ve had great use for this package on numerous occassions so thank you!

    I would have thought this question would have been addressed here by now however – with the built-in Java of Synology DSM6, are there any benefits/drawbacks to sticking with the community Java package vs the now official Synology Java ? Thank you.

  42. Christopher Exline

    Hi, update 0039 from 26/Apr/16 is not available for download. Just 0038. Can you please update so we can download and apply this package to work with Java 8u91?

    Many thanks.

  43. SophieH

    Thanks Patters, will keep using yours then as long as you keep up the good work updating – why do most NAS have so pathetically small, non-upgradeable RAM ?!?


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s