Search code examples
javamavennetbeanschromium-embedded

Journey browser Java Chromium Embedded framework throwing error?


I am trying to use a library called Journey browser which uses the Java Chromium Embedded Framework. I first created a Java Maven Project with Netbeans and I edited the pom.xml to match the values on the library's guide, to add the maven dependencies. (No errors detected) I then built the project to download the maven dependency and put their default code (modified slightly) in the main class. My IDE found no errors in the code. However, when I run the project I get a "no chrome_elf in java.library.path". I think this has something to do with embedding JCEF, but I am not sure how to add this to the "java.library.path" in Netbeans.

How do I fix this "chrome_elf" problem? Also, if I am able to fix this will it be an error for production if someone doesn't have "chrome_elf" installed?


Solution

  • For Windows

    This happens because the chrome_elf.dll (on Windows) file cannot be found.

    Java is looking for this file on java.library.path - which (on my machine, anyway) refers to all the locations referenced by the Windows %path% environment variable.

    One way to fix this is to download one of the pre-built distributions from that GitHub page (for example the Windows one, referred to here):

    https://github.com/CodeBrig/Journey/releases/download/0.4.0-78-assets/jcef-distrib-windows64.zip
    

    Then unzip the resulting jcef-distrib-windows64.zip. In the win64\bin\lib\win64 directory under that main directory you will find the chrome_elf.dll you need - and other binaries which are also needed.

    Add this directory to your path - either by adding it to the Windows environment variable or via java -Djava.library.path=....

    For example, the path may be similar to this:

    C:\your\path\to\jcef-distrib-windows64\win64\bin\lib\win64
    

    This should allow you to run the demo code provided in the JourneyBrowser class. A browser window should open as a result.

    Here is the browser:

    enter image description here

    The above steps worked for me - and the only files I needed to keep from the (large) distribution download were those in the jcef-distrib-windows64\win64\bin\lib\win64 directory. It's possible that I already have some other dependencies which may be needed - so I cannot guarantee this process will also work for you.

    For Linux (and MacOS)

    I have not tried this on a Linux machine. But in that case, I believe you will need to download and unzip the jcef-distrib-linux64 release - and then point to the jcef-distrib-linux64\linux64\bin\lib\linux64 directory, containing libcef.so and other libraries.

    Similarly for MacOS, there is a distribution which can be downloaded and unzipped.

    Alternative

    An alternative is to simply use the pre-built distributions provided on GitHub, using the commands provided. Obviously, in this case, you will not be creating your own customized implementation (so, no JourneyBrowser class).