The full version string for this binary release of OpenJDK is 11.0.4+12, and the version number is 11.0.4.
Liberica JDK 11.0.4 for Embedded
Liberica is a certified, Java SE 11-compliant distribution of OpenJDK 11 which works on embedded devices (Linux ARM64, Linux ARMv7, including Raspberry Pi 2 & 3 (ARMv6 hardfloat). It has the following notable additions:
-
Linux x86_64 version contains experimental support for ZGC.
-
Linux x86_64, ARMv8 and ARMv7 distributions include a choice of Client VM, Server VM and Minimal VM.
-
Alpine Linux x86_64 version is build with musl support.
-
Linux ARMv7 distribution contains Device IO API compiled for Raspberry Pi.
Please refer to the Oracle JDK 11.0.4 release notes for further information on JDK 11 features. This document further outlines the peculiarities of Liberica distribution as compared to Oracle JDK 11 distribution.
Supported Embedded configurations
Liberica is tested and certified on Raspberry Pi 2 & 3 running the following OSes:
-
Raspbian OS (armhf)
-
OpenSUSE (armv8)
It is also known to work with Debian (armhf) and Ubuntu (armhf).
Liberica JDK 11.0.4 distribution
Liberica JDK 11.0.4 for Embedded are distributed as .rpm, .deb and .tar.gz packages. Please select the one which is most appropriate for your purposes.
Liberica 11 introduced all new features supported by OpenJDK 11.
With the introduction of the Jigsaw feature in JDK 9 and Minimal VM it is now possible to create a Runtime that is sufficient to run your application and trim down the size of the Runtime. To generate a Runtime with just the Minimal VM, add --vm=minimal to jlink options.
By default, the Liberica uses Server VM. Server VM and Client VM can be enabled with -server and -client command line options, respectively. In case the deployment requires to minimize the footprint, it may be beneficial to use Minimal VM, which emphasises on a minimal footprint. It has C1 JIT compiler only, Serial GC and no serviceability features.
LibericaFX for the Raspberry Pi
Liberica JDK 11 come with a bundled LibericaFX implementation, which is based on OpenJFX. The following tables lists Java FX modules status of Liberica distribution
-
Java FX Graphics - works.
-
Java FX Controls - works.
-
Java FX Media - does not work.
-
Java FX Webkit - does not work.
The following pipelines are known to work: EGL, SW (direct framebuffer) and GTK. By default, Liberica tries to use the accelerated EGL pipeline, which requires the presence of EGL libraries. If they are not found, the implementation falls back to software rendering.
Use the following command line options to specify the rendering pipeline:
-
-Dprism.order=sw forces the use of software rendering pipeline.
-
-Dprism.order=es2 forces the use of EGL pipeline and hardware acceleration.
-
-Djavafx.platform=gtk if you would like to launch a LibericaFX application using Liberica from X11.
Please refer to the following wiki for more information.
Device IO API for the Raspberry Pi
Liberica JDK 11 comes with a bundled OpenJDK Device I/O (DIO) API implementation module. DIO provides a Java API for accessing Raspberry PI GPIO pins and for communicating with peripheral devices:
-
General Purpose Input/Output (GPIO).
-
Inter-Integrated Circuit Bus (I2C), Serial Peripheral Interface (SPI).
-
Universal Asynchronous Receiver/Transmitter (UART).
Please refer to the following wiki for more information.
Security Baselines
BellSoft Liberica follows the security baselines for Oracle Java SE. Please refer to the Oracle documentation for a list of issues fixed in a given release.
Known Issues
LibericaFX and EGL on Raspbian
As of 2017, the default location of Broadcom libEGL.so and libGLESv2.so has changed in Raspbian OS. If you’d like to leverage hardware EGL acceleration available from Broadcom video drivers in LibericaFX while running a recent Raspbian OS, run the following command:
cd /opt/vc/lib
sudo ln -s libbrcmEGL.so libEGL.so
sudo ln -s libbrcmGLESv2.so libGLESv2.so
Issues fixed
Issue | Description |
---|---|
JDK-6913047 | Long term memory leak when using PKCS11 and JCE exceeds 32 bit process address space |
JDK-8139178 | Wrong fontMetrics when printing in Landscape (OpenJDK) |
JDK-8163805 | hotspot/test/serviceability/sa/sadebugd/SADebugDTest.java failed with timed out |
JDK-8170494 | JNI exception pending in PlainDatagramSocketImpl.c |
JDK-8174691 | [TESTBUG] A number of native hotspot unit tests fail when executed in stand-alone mode |
JDK-8179098 | Crypto AES/ECB encryption/decryption performance regression (introduced in jdk9b73) |
JDK-8181143 | Introduce diagnostic flag to abort VM on too long VM operations |
JDK-8188133 | C2: Static field accesses in clinit can trigger deoptimizations |
JDK-8190361 | Incorrect version info in jaccessinspector.exe and jaccesswalker.exe |
JDK-8195793 | Remove GTE CyberTrust Global Root |
JDK-8200286 | (testbug) MOptionTest test fails with java.lang.AssertionError: Classfiles too old! |
JDK-8200613 | SA: jstack throws UnmappedAddressException with a CDS core file |
JDK-8201317 | X25519/X448 code improvements |
JDK-8201633 | Problems with AES-GCM native acceleration |
JDK-8202353 | os::readdir should use readdir instead of readdir_r |
JDK-8202414 | Unsafe write after primitive array creation may result in array length change |
JDK-8202651 | Test ComodoCA.java fails |
JDK-8202794 | Native Unix code should use readdir rather than readdir_r |
JDK-8202884 | SA: Attach/detach might fail on Linux if debugee application create/destroy threads during attaching |
JDK-8204308 | SA: serviceability/sa/TestInstanceKlassSize*.java fails when running in CDS mode |
JDK-8205432 | Replace the placeholder Japanese era name |
JDK-8205574 | Loop predication “assert(f ⇐ 1 && f >= 0) failed Incorrect frequency” |
JDK-8205611 | Improve the wording of LinkageErrors to include module and class loader information |
JDK-8206955 | MethodHandleProxies.asInterfaceInstance does not support default methods |
JDK-8207340 | (fs) UnixNativeDispatcher close and readdir usages should be fixed |
JDK-8207760 | SAXException: Invalid UTF-16 surrogate detected: d83c ? |
JDK-8208634 | Add x-IBM-1129 charset |
JDK-8208648 | ECC Field Arithmetic Enhancements |
JDK-8208656 | Move java/util/Calendar/CalendarTestScripts tests into OpenJDK |
JDK-8208698 | Improved ECC Implementation |
JDK-8208702 | javax/swing/reliability/HangDuringStaticInitialization.java may hang on macos |
JDK-8208996 | X11 icon window color handing bug |
JDK-8209055 | c.s.t.javac.code.DeferredCompletionFailureHandler seems to use WeakHashMap incorrectly |
JDK-8209414 | AArch64: method handle invocation does not respect JVMTI interp_only mode |
JDK-8209415 | Fix JVMTI test failure HS202 |
JDK-8209573 | [TESTBUG] gc/epsilon/TestMemoryMXBeans should retry on failure |
JDK-8209914 | javadoc search sometimes generates bad URIs |
JDK-8209951 | Problematic sparc intrinsic: com.sun.crypto.provider.CipherBlockChaining |
JDK-8210008 | custom extension for make/SourceRevision.gmk |
JDK-8210197 | javac can’t tell during speculative attribution if a diamond expression is creating an anonymous inner class or not |
JDK-8210283 | Support git as an SCM alternative in the build |
JDK-8210320 | PPC64: Fix uninitialized variable in C1 LIR assembler code |
JDK-8210457 | JVM crash in ResolvedMethodTable::add_method(Handle) |
JDK-8210483 | AssertionError in DeferredAttr at setOverloadKind caused by JDK-8203679 |
JDK-8210519 | build/releaseFile/CheckSource.java failed additional sources found |
JDK-8210633 | Cannot parse JapaneseDate string with DateTimeFormatterBuilder Mapped-values |
JDK-8210739 | Calling JSpinner’s setFont with null throws NullPointerException |
JDK-8210782 | Upgrade HarfBuzz to the latest 2.3.1 |
JDK-8210803 | Compilation failure in codeBlob.cpp for Windows 32-bit |
JDK-8210837 | Add libXrandr-devel to the Linux devkits |
JDK-8210863 | Remove Xrandr include files from JDK sources |
JDK-8210880 | Remove HPKeysym.h from JDK sources |
JDK-8210886 | Remove references in xwindows.md to non-existent files. |
JDK-8210899 | (zipfs) ZipFileSystem.EntryOutputStreamCRC32 mistakenly set the crc32 value into size field |
JDK-8211266 | [TESTBUG] ZipFSTester.java failed intermittently in ZipFSTester.checkRead(): bound must be positive |
JDK-8211350 | Remove jprt support |
JDK-8211393 | Memory leak issue on awt_InputMethod.c |
JDK-8211435 | Exception in thread “AWT-EventQueue-1” java.lang.IllegalArgumentException: null source |
JDK-8211698 | Crash in C2 compiled code during execution of double array heavy processing code |
JDK-8211810 | X11 Time stamp data should be unsigned |
JDK-8211826 | StringIndexOutOfBoundsException happens via GetStringUTFRegion() |
JDK-8211841 | [testbug] sun/nio/cs/OLD/TestIBMDB.java does not compile (aix) |
JDK-8211969 | test/jdk/lib/security/CheckBlacklistedCerts.java searching for wrong paths |
JDK-8211971 | Move security/cacerts/VerifyCACerts.java and security/CheckBlacklistedCerts.java |
JDK-8212202 | [Windows] Exception if no printers are installed. |
JDK-8212205 | VM asserts after CDS archive has been unmapped |
JDK-8212328 | Exceptional throw cases |
JDK-8212562 | To remove lib/security from test/jdk/TEST.groups |
JDK-8212676 | AWT SystemColor setting on CDE |
JDK-8212677 | X11 default visual support for IM status window on VNC |
JDK-8212678 | Windows IME related patch |
JDK-8212794 | IBM-964 is required for AIX default charset |
JDK-8212828 | (process) Provide a way for Runtime.exec to use posix_spawn on linux |
JDK-8213015 | Inconsistent settings between JFR.configure and -XX:FlightRecorderOptions |
JDK-8213213 | Remove src/java.desktop/unix/classes/sun/awt/X11/keysym2ucs.h |
JDK-8213292 | Input freezes after MacOS key-selector (press&hold) usage on macOS Mojave |
JDK-8213294 | Upgrade IANA LSR data |
JDK-8213431 | Improve file protocol handling |
JDK-8213432 | Better copies of CopiesList |
JDK-8213515 | Improve freetype detection on linux/ppc64/ppc64le/s390x |
JDK-8213614 | DnD operation change feature does not work with 64bit big endian CPU |
JDK-8213617 | JFR should record the PID of the recorded process |
JDK-8213618 | IBM970 charset has missing entry and remove unexpected entries |
JDK-8213825 | assert(false) failed: Non-balanced monitor enter/exit! Likely JNI locking |
JDK-8213944 | Fix AIX build after the removal of Xrandr.h and add a configure check for it |
JDK-8214002 | Cannot use italic font style if the font has embedded bitmap |
JDK-8214109 | XToolkit is not correctly displayed color on 16-bit high color setting |
JDK-8214111 | There is no icon in all JOptionPane target image |
JDK-8214112 | The whole text in target JPasswordField image are not selected |
JDK-8214252 | Expanded & Collapsed nodes of a JTree look the same on GTK3 |
JDK-8214253 | Tooltip is transparent rather than having a black background |
JDK-8214468 | jQuery UI upgrade from 1.11.4 to 1.12.1 |
JDK-8214533 | IBM-29626C is required for AIX default charset |
JDK-8214765 | All TrayIcon MessageType icons does not show up with gtk3 option set |
JDK-8214935 | Upgrade IANA LSR data |
JDK-8215026 | Incorrect amount of memory unmapped with ImageFileReader::close() |
JDK-8215123 | Crash in runtime image built with jlink –compress=2 |
JDK-8215284 | Reduce noise induced by periodic task getFileSize() |
JDK-8215296 | do not disable c99 on Solaris |
JDK-8215342 | [Zero] Build fails after JDK-8200613 |
JDK-8215364 | JavaFX crashes on Ubuntu 18.04 with Wayland while using Swing-FX interop |
JDK-8215374 | 32-bit build failures after JDK-8181143 (Introduce diagnostic flag to abort VM on too long VM operations) |
JDK-8215398 | -Xlog option usage ⇒ Invalid decorator ’_cds.log’. |
JDK-8215443 | The use of TransportContext.fatal() leads to bad coding style |
JDK-8215472 | (zipfs) Cleanups in implementation classes of jdk.zipfs and tests |
JDK-8215707 | [macosx] fix pthread_getschedparam and pthread_setschedparam calls |
JDK-8215757 | C2: PhaseIdealLoop::create_new_if_for_predicate() computes wrong IDOM |
JDK-8215790 | Delegated task created by SSLEngine throws java.nio.BufferUnderflowException |
JDK-8216045 | The size of key_exchange may be wrong on FFDHE |
JDK-8216355 | missing NULL checks in libnet in interface iteration and potential resource leak in getMacAddress |
JDK-8216381 | More limited privilege usage |
JDK-8216556 | Unnecessary liveness computation with JVMTI |
JDK-8216577 | Add GlobalSign’s R6 Root certificate |
JDK-8216597 | SIGBUS in Java_sun_security_pkcs11_wrapper_PKCS11_getNativeKeyInfo after JDK-6913047 |
JDK-8216970 | condy causes JVM crash |
JDK-8217088 | Disable JDK-6913047 fix (SunPKCS11 memory leak) after JDK-8216597 (SIGBUS error in getNativeKeyInfo) |
JDK-8217094 | HttpClient SSL race if a socket IOException is raised before ALPN is available |
JDK-8217263 | Automate DashOffset test |
JDK-8217311 | Improve Exception thrown when MulticastSocket.setInterface fails on AIX(Unix) |
JDK-8217563 | Improve realm maintenance |
JDK-8217564 | idempotent protection missing in crc32c.h |
JDK-8217647 | JFR: recordings on 32-bit systems unreadable |
JDK-8217690 | Update public suffix version |
JDK-8217707 | JNICALL declaration breaks Splash screen functions |
JDK-8217765 | Internal Error (javaCalls.cpp:61) guarantee(thread→can_call_java()) failed |
JDK-8217786 | Provide virtualization related info in the hs_error file on linux s390x |
JDK-8217878 | ENVELOPING XML signature no longer works in JDK 11 |
JDK-8217879 | hs_err should print more instructions in hex dump |
JDK-8217880 | AIX build issue after JDK-8214533 |
JDK-8218020 | Fix version number in mesa.md 3rd party legal file |
JDK-8218060 | JDK-8217786 breaks build due to remaining unused function |
JDK-8218063 | JDK-8218060 breaks build for S390 |
JDK-8218152 | [javac] fails and exits with no error if a bad annotation processor provided |
JDK-8218469 | JSlider display issue with slider for GTKLookAndFeel |
JDK-8218473 | JOptionPane display issue with GTKLookAndFeel |
JDK-8218479 | JTextPane display issue with GTKLookAndFeel |
JDK-8218618 | Program fails when using JDK addressed by UNC path and using Security Manager |
JDK-8218674 | HTML Tooltip with “img=src” on component doesn’t show |
JDK-8218733 | SA: CollectedHeap provides broken implementation for used() and capacity() |
JDK-8218781 | Localized names for Japanese era Reiwa in COMPAT provider |
JDK-8218811 | replace open by os::open in hotspot coding |
JDK-8218854 | FontMetrics.getMaxAdvance may be less than the maximum FontMetrics.charWidth |
JDK-8218863 | Better endpoint checks |
JDK-8218873 | Improve JSSE endpoint checking |
JDK-8218876 | Improve PNG support options |
JDK-8218960 | CONFIG level logging statements printed in CLDRCalendarDataProviderImpl.java even when default log Level is INFO |
JDK-8218991 | s390: Add intrinsic for GHASH algorithm |
JDK-8219006 | AArch64: Register corruption in slow subtype check |
JDK-8219011 | Implement MacroAssembler::warn method on AArch64 |
JDK-8219112 | name_and_sig_as_C_string usages in frame_s390 miss ResourceMark |
JDK-8219335 | “failed: unexpected type” assert failure in ConnectionGraph::split_unique_types() with unsafe accesses |
JDK-8219389 | Delegated task created by SSLEngine throws BufferUnderflowException |
JDK-8219414 | SA: jhsdb jsnap throws UnmappedAddressException with core generated by gcore |
JDK-8219448 | split-if update_uses accesses stale idom data |
JDK-8219460 | ppc: adjust NativeGeneralJump::insert_unconditional to stack allocated MacroAssembler |
JDK-8219566 | JFR did not collect call stacks when MaxJavaStackTraceDepth is set to zero |
JDK-8219574 | Minimal VM build failure after JDK-8219414 |
JDK-8219582 | PPC: Crash after C1 checkcast patched and GC |
JDK-8219584 | Try to dump error file by thread which causes safepoint timeout |
JDK-8219698 | aarch64: SIGILL triggered when specifying unsupported hardware features |
JDK-8219710 | Bump update version for OpenJDK: jdk11.0.4 |
JDK-8219746 | Provide virtualization related info in the hs_error file on linux ppc64 / ppc64le |
JDK-8219775 | Certificate validation improvements |
JDK-8219890 | Calendar.getDisplayName() returns empty string for new Japanese Era on some locales |
JDK-8219915 | [TESTBUG] Fix test langtools/tools/javac/processing/model/completionfailure/SymbolsDontCumulate.java in Standalone mode |
JDK-8219918 | ProblemList hotspot tests failing in SAP testing. |
JDK-8220165 | Encryption using GCM results in RuntimeException- input length out of bound |
JDK-8220166 | Performance regression in deserialization (4-6% in SPECjbb) |
JDK-8220198 | Lots of com/sun/crypto/provider/Cipher tests fail on x86_32 due to missing SHA512 stubs |
JDK-8220281 | IBM-858 alias name is missing on IBM00858 charset |
JDK-8220293 | Deadlock in JFR string pool |
JDK-8220349 | The fix done for JDK-8214253 have caused issues in JTree behaviour |
JDK-8220353 | [TESTBUG] TestRegisterRestoring uses SafepointALot without UnlockDiagnosticVMOptions |
JDK-8220374 | C2: LoopStripMining doesn’t strip as expected |
JDK-8220441 | [PPC64] Clobber memory effect missing for memory barriers in atomics |
JDK-8220495 | Update GIFlib library to the 5.1.8 |
JDK-8220513 | Wrapper Key may get deleted when closing sessions in SunPKCS11 crypto provider |
JDK-8220517 | Enhanced GIF support |
JDK-8220625 | tools/javac/classreader/8171132/BadConstantValue.java failed with “did not see expected error” |
JDK-8220707 | [TESTBUG] serviceability/sa/TestHeapDumpForLargeArray.java fails with jtreg -vmoption:-Xmx < 8g |
JDK-8220714 | C2 Compilation failure when accessing off-heap memory using Unsafe |
JDK-8220718 | Missing ResourceMark in nmethod::metadata_do |
JDK-8220781 | linux-s390 : os::get_summary_cpu_info gives bad output |
JDK-8220794 | PPC64: Fix signal handler for SIGSEGV on branch to illegal address |
JDK-8221083 | [ppc64] Wrong oop compare in C1-generated code |
JDK-8221175 | Fix bad function case for controlled JVM crash on PPC64 big-endian |
JDK-8221244 | Unexpected behavior of PropertyDescription.getReadMethod for boolean properties |
JDK-8221263 | [TEST_BUG] RemotePrinterStatusRefresh test is hard to use |
JDK-8221304 | Problem list java/awt/FontMetrics/MaxAdvanceIsMax.java |
JDK-8221345 | Better Poly1305 support |
JDK-8221400 | java/lang/String/StringRepeat.java test requests too much heap |
JDK-8221401 | java/math/BigInteger/LargeValueExceptions.java test should be disabled on 32-bit platforms |
JDK-8221412 | lookupPrintServices() does not always update the list of Windows remote printers |
JDK-8221437 | assert(java_lang_invoke_ResolvedMethodName::vmtarget(resolved_method()) == m()) failed: Should not change after link resolution |
JDK-8221470 | Print methods in exception messages in java-like Syntax. |
JDK-8221479 | Fix JFR profiling on s390 |
JDK-8221483 | TestOopCmp.java fails due to “Multiple garbage collectors selected” |
JDK-8221518 | Normalize normalization |
JDK-8221535 | add steal tick related information to hs_error file [linux] |
JDK-8221610 | Resurrect (legacy) JRE bundle target |
JDK-8221639 | [i386] expand_exec_shield_cs_limit workaround is undefined code after JDK-8199717 |
JDK-8221833 | Readability check in Symbol::is_valid not performed for some addresses |
JDK-8221870 | use driver to run CtwRunner in applications/ctw tests |
JDK-8221880 | Better customization for Windows RC properties FileDescription and ProductName |
JDK-8221915 | cleanup ticks related coding in os_perf_aix.cpp [aix] |
JDK-8221917 | serviceability/sa/TestPrintMdo.java fails on 32-bit platforms |
JDK-8221924 | get(null) on single-entry unmodifiable Map returns null instead of throwing NPE |
JDK-8222027 | java/util/logging/LogManager/TestLoggerNames.java generates intermittent ClassCastException |
JDK-8222032 | x86_32 fails with “wrong size of mach node” on AVX-512 machine |
JDK-8222089 | [TESTBUG] sun/security/lib/cacerts/VerifyCACerts.java fails due to cert within 90-day expiry window |
JDK-8222133 | Add temporary exceptions for root certs that are due to expire soon |
JDK-8222136 | Remove two Comodo root CA certificates that are expiring |
JDK-8222137 | Remove T-Systems root CA certificate |
JDK-8222397 | x86_32 tests with UseSHA1Intrinsics SEGV due to garbled registers |
JDK-8222410 | java/nio/file/attribute/BasicFileAttributeView/UnixSocketFile hangs when “nc” does not accept “-U” |
JDK-8222522 | Add configure options for Mac Bundle creation |
JDK-8222532 | (zipfs) Performance regression when writing ZipFileSystem entries in parallel |
JDK-8222678 | Improve TLS negotiation |
JDK-8222913 | Add Jib support for VERSION_EXTRA* |
JDK-8222930 | ConcurrentSkipListMap.clone() shares size variable between original and clone |
JDK-8223266 | PPC64: Check for branch to illegal address before checking for mem serialization |
JDK-8223395 | PPC64: Improve comments in the JVM signal handler to match ISA text |
JDK-8223499 | Remove two DocuSign root certificates that are expiring |
JDK-8223555 | Cleanups in cacerts tests |
JDK-8223597 | jdk/nio/zipfs/ZipFSTester.java RuntimeException: CHECK_FAILED! (getAttribute.crc failed 6af4413c vs 0 …) |
JDK-8223665 | SA: debugd options should follow jhsdb style |
JDK-8224474 | harfbuzz 2.3.1 code fails to compile with gcc 4.4.7 |
JDK-8224671 | AArch64: mauve System.arraycopy test failure |
JDK-8224727 | Problem list test security/infra/java/security/cert/CertPathValidator/certification/ActalisCA.java |
JDK-8224828 | aarch64: rflags is not correct after safepoint poll |
JDK-8224880 | AArch64: java/javac error with AllocatePrefetchDistance |
JDK-8225402 | events logging in deoptimization.cpp should go to deopt-log |
JDK-8225716 | G1 GC: Undefined behaviour in G1BlockOffsetTablePart::block_at_or_preceding |
JDK-8226876 | Assertion in sun/util/locale/provider/CalendarDataUtility on Windows after JDK-8218960 |
JDK-8226880 | Backport of JDK-8208698 (Improved ECC Implementation) should not bring parts of JDK-8205476 (KeyAgreement#generateSecret is not reset for ECDH based algorithm) |
JDK-8222066 | Change JavaFX release version in 11-dev to 11.0.3 |
JDK-8219539 | Cherry pick GTK WebKit 2.22.6 changes |
JDK-8218611 | [DRT] fast/xslt tests fails with Unsupported encoding windows-1251 |
JDK-8213806 | WebView - JVM crashes for given HTML |
JDK-8214185 | Upgrade GStreamer to the latest (1.14.4) version |
JDK-8215799 | Complex text is not rendered by webkit on Windows |
JDK-8215702 | SVG gradients are not rendered |
JDK-8211454 | Update SQLite to version 3.26.0 |
JDK-8214452 | Update libxml2 to version 2.9.9 |
JDK-8214119 | Update to 607.1 version of WebKit |
JDK-8207772 | File API and FileReader should be supported in WebView |
JDK-8211307 | Add prefix to build tools paths |
JDK-8213541 | WebView does not handle HTTP response without ContentType |
JDK-8209457 | [WebView] Canvas.toDataURL with image/jpeg MIME type fails |