title: Google OR-Tools in Intellij: UnsatisfiedLinkError
body: <p>I am setting up a java framework that should use the Google OR-Tools. The code below compiles successfully, but throws an exception at runtime:</p>
  
  <pre><code>Exception in thread "main" java.lang.UnsatisfiedLinkError: com.google.ortools.linearsolver.operations_research_linear_solverJNI.MPSolver_CLP_LINEAR_PROGRAMMING_get()I
      at com.google.ortools.linearsolver.operations_research_linear_solverJNI.MPSolver_CLP_LINEAR_PROGRAMMING_get(Native Method)
      at com.google.ortools.linearsolver.MPSolver$OptimizationProblemType.&lt;clinit&gt;(MPSolver.java:221)
      at Main.main(Main.java:15)
  </code></pre>
  
  <p>I am using Intellij 2018.3 on Windows 10. I spent a lot of time trying to get this run, but unsuccessful. Based on what I found on the internet, the exception might be caused by poor linking and/or missing external libraries on which OR-Tools depends. However, I don't have the background to resolve this issue, and also Intellij does not highlight anything. Any idea what the problem is?</p>
  
  <p>For completion, this is the code I run:</p>
  
  <pre><code>import com.google.ortools.linearsolver.MPObjective;
  import com.google.ortools.linearsolver.MPSolver;
  import com.google.ortools.linearsolver.MPVariable;
  
  public final class Main {
  
    public static void main(String[] args) {
  
      // Create the linear solver with the GLOP backend.
      MPSolver solver =
          new MPSolver("SimpleLpProgram", MPSolver.OptimizationProblemType.GLOP_LINEAR_PROGRAMMING);
  
      // Create the variables x and y.
      MPVariable x = solver.makeNumVar(0.0, 1.0, "x");
      MPVariable y = solver.makeNumVar(0.0, 2.0, "y");
  
      System.out.println("Number of variables = " + solver.numVariables());
  
      // Create a linear constraint, 0 &lt;= x + y &lt;= 2.
      MPConstraint ct = solver.makeConstraint(0.0, 2.0, "ct");
      ct.setCoefficient(x, 1);
      ct.setCoefficient(y, 1);
  
      System.out.println("Number of constraints = " + solver.numConstraints());
  
      // Create the objective function, 3 * x + y.
      MPObjective objective = solver.objective();
      objective.setCoefficient(x, 3);
      objective.setCoefficient(y, 1);
      objective.setMaximization();
  
      solver.solve();
  
      System.out.println("Solution:");
      System.out.println("Objective value = " + objective.value());
      System.out.println("x = " + x.solutionValue());
      System.out.println("y = " + y.solutionValue());
    }
  }
  </code></pre>