2 Replies Latest reply on May 9, 2017 7:06 AM by Brandt Pruett

    java.lang.UnsatisfiedLinkError with Tableau SDK on Linux

    Brandt Pruett



      I am running a Java-based web app that is using the Tableau SDK v 10.2.1 to create an extract.  The SDK is installed via an rpm for Red Hat 64 bit.  LD_LIBRARY_PATH is set through a script in /etc/profile.d.  The rpm installs the sdk to /usr/lib64/tableausdk, and that's what LD_LIBRARY_PATH's value is when checking.  Nevertheless, when trying to create the extract an Exception occurs with the following stack trace snippet.  I am trying to find the actual log to see if there are further helpful details:


      java.lang.UnsatisfiedLinkError: Unable to load library 'TableauCommon': libTableauCommon.so: cannot open shared object file: No such file or directory at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:194) at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:283) at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:244) at com.tableausoftware.common.Type.getConstant(Unknown Source) at


      I have confirmed libTableauCommon.so is in fact in /usr/lib64/tableausdk, but have I configured this correctly after all?  The relevant jar files are packaged with the web app (otherwise it wouldn't even build).


      What am I missing and can anyone help?





        • 1. Re: java.lang.UnsatisfiedLinkError with Tableau SDK on Linux
          Brandt Pruett

          Update: We set the LD_LIBRARY_PATH in the shell script that is run as Apache Tomcat starts.  We no longer get the Unsatisfied link, instead we get:


          com.tableausoftware.TableauException: Unknown error

            at com.tableausoftware.extract.ExtractAPI.initialize(Unknown Source)


          This is in response to executing ExtractAPI.initialize() before instantiating an Extract object.


          Any ideas?  I tried adding /usr/lib64/tableausdk to $PATH as well and still getting the same Exception.  /usr/bin is already in the $PATH.

          • 2. Re: java.lang.UnsatisfiedLinkError with Tableau SDK on Linux
            Brandt Pruett

            A two final environment variables were added to the Tomcat startup.  TAB_SDK_TMPDIR & TAB_SDK_LOGDIR and everything worked.  So the problem seemed to be from an incorrectly configured Tomcat.  However, the latter two are supposed to have been optional.  Maybe the Linux distro we are using doesn't have the temp file directory set.


            So, in case someone else has this issue, if running a web app that leverages the Tableau SDK you mustset LD_LIBRARY_PATH, TAB_SDK_TMPDIR & TAB_SDK_LOGDIR in the servlet container startup script.  Setting them in /etc/profile.d is not sufficient.