From 03ab0457f3dc13883c7c601af65e8440a97d9421 Mon Sep 17 00:00:00 2001 From: Mizux Seiha Date: Fri, 11 Sep 2020 21:17:23 +0200 Subject: [PATCH] make(java): Update examples to use maven (#202) * Fix RandomTsp.java --- examples/contrib/AllDifferentExcept0.java | 10 +-- examples/contrib/AllInterval.java | 8 +-- examples/contrib/Circuit.java | 7 +- examples/contrib/CoinsGrid.java | 7 +- examples/contrib/CoinsGridMIP.java | 6 +- examples/contrib/ColoringMIP.java | 6 +- examples/contrib/CoveringOpl.java | 8 +-- examples/contrib/Crossword.java | 8 +-- examples/contrib/DeBruijn.java | 7 +- examples/contrib/Diet.java | 8 +-- examples/contrib/DietMIP.java | 6 +- examples/contrib/DivisibleBy9Through1.java | 8 +-- examples/contrib/GolombRuler.java | 6 +- examples/contrib/Issue173.java | 7 +- examples/contrib/KnapsackMIP.java | 6 +- examples/contrib/LeastDiff.java | 7 +- examples/contrib/MagicSquare.java | 7 +- examples/contrib/Map.java | 8 +-- examples/contrib/Map2.java | 7 +- examples/contrib/Minesweeper.java | 8 +-- examples/contrib/MultiThreadTest.java | 7 +- examples/contrib/NQueens.java | 8 +-- examples/contrib/NQueens2.java | 8 +-- examples/contrib/Partition.java | 7 +- examples/contrib/QuasigroupCompletion.java | 7 +- examples/contrib/SendMoreMoney.java | 7 +- examples/contrib/SendMoreMoney2.java | 10 +-- examples/contrib/SendMostMoney.java | 8 +-- examples/contrib/Seseman.java | 8 +-- examples/contrib/SetCovering.java | 8 +-- examples/contrib/SetCovering2.java | 8 +-- examples/contrib/SetCovering3.java | 8 +-- examples/contrib/SetCovering4.java | 8 +-- examples/contrib/SetCoveringDeployment.java | 9 +-- examples/contrib/SimpleRoutingTest.java | 7 +- examples/contrib/StableMarriage.java | 8 +-- examples/contrib/StiglerMIP.java | 6 +- examples/contrib/Strimko2.java | 9 +-- examples/contrib/Sudoku.java | 8 +-- examples/contrib/SurvoPuzzle.java | 11 +-- examples/contrib/ToNum.java | 8 +-- examples/contrib/WhoKilledAgatha.java | 8 +-- examples/contrib/Xkcd.java | 8 +-- examples/contrib/YoungTableaux.java | 8 +-- ...dVehicleRoutingProblemWithTimeWindows.java | 9 +-- examples/java/FlowExample.java | 14 ++-- examples/java/IntegerProgramming.java | 15 ++-- examples/java/LinearAssignmentAPI.java | 10 +-- examples/java/LinearProgramming.java | 11 +-- examples/java/RabbitsPheasants.java | 13 ++-- examples/java/RandomTsp.java | 11 ++- makefiles/Makefile.java.mk | 70 ++++++++++++------- 52 files changed, 160 insertions(+), 330 deletions(-) diff --git a/examples/contrib/AllDifferentExcept0.java b/examples/contrib/AllDifferentExcept0.java index 365357951e..93debce4b3 100644 --- a/examples/contrib/AllDifferentExcept0.java +++ b/examples/contrib/AllDifferentExcept0.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.Solver; @@ -20,18 +21,10 @@ import java.text.*; import java.util.*; public class AllDifferentExcept0 { - - static { - System.loadLibrary("jniortools"); - } - - // // alldifferent_except_0(solver, x) - // // A decomposition of the global constraint // alldifferent_except_0, i.e. all values // must be either distinct, or 0. - // public static void alldifferent_except_0(Solver solver, IntVar[] a) { int n = a.length; @@ -104,6 +97,7 @@ public class AllDifferentExcept0 { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); AllDifferentExcept0.solve(); } } diff --git a/examples/contrib/AllInterval.java b/examples/contrib/AllInterval.java index efd36e61f3..25e13614c2 100644 --- a/examples/contrib/AllInterval.java +++ b/examples/contrib/AllInterval.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.Solver; @@ -20,16 +21,10 @@ import java.text.*; import java.util.*; public class AllInterval { - - static { - System.loadLibrary("jniortools"); - } - /** * Implements the all interval problem. See http://www.hakank.org/google_or_tools/all_interval.py */ private static void solve(int n) { - Solver solver = new Solver("AllInterval"); // @@ -87,6 +82,7 @@ public class AllInterval { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); int n = 12; if (args.length > 0) { diff --git a/examples/contrib/Circuit.java b/examples/contrib/Circuit.java index 56ceb1348f..d75bcf2a67 100644 --- a/examples/contrib/Circuit.java +++ b/examples/contrib/Circuit.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.Solver; @@ -20,11 +21,6 @@ import java.text.*; import java.util.*; public class Circuit { - - static { - System.loadLibrary("jniortools"); - } - /** * circuit(solver, x) * @@ -100,6 +96,7 @@ public class Circuit { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); int n = 5; if (args.length > 0) { diff --git a/examples/contrib/CoinsGrid.java b/examples/contrib/CoinsGrid.java index 8d8990157a..30a9f4d045 100644 --- a/examples/contrib/CoinsGrid.java +++ b/examples/contrib/CoinsGrid.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.OptimizeVar; @@ -21,11 +22,6 @@ import java.text.*; import java.util.*; public class CoinsGrid { - - static { - System.loadLibrary("jniortools"); - } - /** Solves the Coins Grid problem. See http://www.hakank.org/google_or_tools/coins_grid.py */ private static void solve() { Solver solver = new Solver("CoinsGrid"); @@ -111,6 +107,7 @@ public class CoinsGrid { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); CoinsGrid.solve(); } } diff --git a/examples/contrib/CoinsGridMIP.java b/examples/contrib/CoinsGridMIP.java index c2e480af55..36867c2469 100755 --- a/examples/contrib/CoinsGridMIP.java +++ b/examples/contrib/CoinsGridMIP.java @@ -43,13 +43,10 @@ */ package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.linearsolver.*; public class CoinsGridMIP { - static { - System.loadLibrary("jniortools"); - } - private static void solve(String solverType) { System.out.println("---- CoinsGridMIP with " + solverType); @@ -95,6 +92,7 @@ public class CoinsGridMIP { } public static void main(String[] args) { + Loader.loadNativeLibraries(); solve("SCIP"); solve("CBC"); solve("GLPK"); diff --git a/examples/contrib/ColoringMIP.java b/examples/contrib/ColoringMIP.java index d69e3e517b..8d0b7ff472 100755 --- a/examples/contrib/ColoringMIP.java +++ b/examples/contrib/ColoringMIP.java @@ -20,6 +20,7 @@ */ package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.linearsolver.MPConstraint; import com.google.ortools.linearsolver.MPObjective; import com.google.ortools.linearsolver.MPSolver; @@ -35,10 +36,6 @@ public class ColoringMIP { } } - static { - System.loadLibrary("jniortools"); - } - private static void solve(String solverType) { System.out.println("---- CoinsGridMIP with " + solverType); @@ -135,6 +132,7 @@ public class ColoringMIP { } public static void main(String[] args) { + Loader.loadNativeLibraries(); solve("SCIP"); solve("CBC"); solve("GLPK"); diff --git a/examples/contrib/CoveringOpl.java b/examples/contrib/CoveringOpl.java index 1f127696d9..9be28aa491 100644 --- a/examples/contrib/CoveringOpl.java +++ b/examples/contrib/CoveringOpl.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.OptimizeVar; @@ -21,11 +22,6 @@ import java.text.*; import java.util.*; public class CoveringOpl { - - static { - System.loadLibrary("jniortools"); - } - /** Solves a set covering problem. See http://www.hakank.org/google_or_tools/covering_opl.py */ private static void solve() { @@ -119,7 +115,7 @@ public class CoveringOpl { } public static void main(String[] args) throws Exception { - + Loader.loadNativeLibraries(); CoveringOpl.solve(); } } diff --git a/examples/contrib/Crossword.java b/examples/contrib/Crossword.java index 6c10f70214..460b6581a7 100644 --- a/examples/contrib/Crossword.java +++ b/examples/contrib/Crossword.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.Solver; @@ -20,11 +21,6 @@ import java.text.*; import java.util.*; public class Crossword { - - static { - System.loadLibrary("jniortools"); - } - /** Solving a simple crossword. See http://www.hakank.org/google_or_tools/crossword2.py */ private static void solve() { @@ -196,7 +192,7 @@ public class Crossword { } public static void main(String[] args) throws Exception { - + Loader.loadNativeLibraries(); Crossword.solve(); } } diff --git a/examples/contrib/DeBruijn.java b/examples/contrib/DeBruijn.java index 0800d15d88..ef0fa21193 100644 --- a/examples/contrib/DeBruijn.java +++ b/examples/contrib/DeBruijn.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.Solver; @@ -20,11 +21,6 @@ import java.text.*; import java.util.*; public class DeBruijn { - - static { - System.loadLibrary("jniortools"); - } - /** * toNum(solver, a, num, base) * @@ -182,6 +178,7 @@ public class DeBruijn { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); int base = 2; int n = 3; diff --git a/examples/contrib/Diet.java b/examples/contrib/Diet.java index 5867edd806..8b56c141c6 100644 --- a/examples/contrib/Diet.java +++ b/examples/contrib/Diet.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.*; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; @@ -21,14 +22,8 @@ import java.text.*; import java.util.*; public class Diet { - - static { - System.loadLibrary("jniortools"); - } - /** Solves the Diet problem. See http://www.hakank.org/google_or_tools/diet1.py */ private static void solve() { - Solver solver = new Solver("Diet"); int n = 4; @@ -90,6 +85,7 @@ public class Diet { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); Diet.solve(); } } diff --git a/examples/contrib/DietMIP.java b/examples/contrib/DietMIP.java index 21f7525da0..fcdc0fa0c4 100755 --- a/examples/contrib/DietMIP.java +++ b/examples/contrib/DietMIP.java @@ -19,16 +19,13 @@ */ package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.linearsolver.MPConstraint; import com.google.ortools.linearsolver.MPObjective; import com.google.ortools.linearsolver.MPSolver; import com.google.ortools.linearsolver.MPVariable; public class DietMIP { - static { - System.loadLibrary("jniortools"); - } - private static void solve(String solverType) { MPSolver solver = MPSolver.createSolver(solverType); double infinity = MPSolver.infinity(); @@ -79,6 +76,7 @@ public class DietMIP { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); solve("CBC"); } } diff --git a/examples/contrib/DivisibleBy9Through1.java b/examples/contrib/DivisibleBy9Through1.java index 9457723f96..1c802b053b 100644 --- a/examples/contrib/DivisibleBy9Through1.java +++ b/examples/contrib/DivisibleBy9Through1.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.Solver; @@ -20,11 +21,6 @@ import java.text.*; import java.util.*; public class DivisibleBy9Through1 { - - static { - System.loadLibrary("jniortools"); - } - /** * A simple propagator for modulo constraint. * @@ -168,7 +164,7 @@ public class DivisibleBy9Through1 { } public static void main(String[] args) throws Exception { - + Loader.loadNativeLibraries(); int base = 10; if (args.length > 0) { diff --git a/examples/contrib/GolombRuler.java b/examples/contrib/GolombRuler.java index e45878fe1b..dc24136f52 100644 --- a/examples/contrib/GolombRuler.java +++ b/examples/contrib/GolombRuler.java @@ -21,6 +21,7 @@ */ package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.OptimizeVar; @@ -35,10 +36,6 @@ import com.google.ortools.constraintsolver.Solver; * @since 17/03/11 */ public class GolombRuler { - static { - System.loadLibrary("jniortools"); - } - /** Golomb Ruler Problem. */ private static void solve(int m) { Solver solver = new Solver("GR " + m); @@ -83,6 +80,7 @@ public class GolombRuler { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); GolombRuler.solve(8); } } diff --git a/examples/contrib/Issue173.java b/examples/contrib/Issue173.java index 4d05a514eb..1e7938bce8 100644 --- a/examples/contrib/Issue173.java +++ b/examples/contrib/Issue173.java @@ -1,16 +1,12 @@ package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.linearsolver.MPConstraint; import com.google.ortools.linearsolver.MPObjective; import com.google.ortools.linearsolver.MPSolver; import com.google.ortools.linearsolver.MPVariable; public class Issue173 { - - static { - System.loadLibrary("jniortools"); - } - public static void breakit() { for (int i = 0; i < 50000; i++) { @@ -34,6 +30,7 @@ public class Issue173 { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); breakit(); } } diff --git a/examples/contrib/KnapsackMIP.java b/examples/contrib/KnapsackMIP.java index de1f5cf148..9d7f3a896a 100755 --- a/examples/contrib/KnapsackMIP.java +++ b/examples/contrib/KnapsackMIP.java @@ -22,13 +22,10 @@ */ package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.linearsolver.*; public class KnapsackMIP { - static { - System.loadLibrary("jniortools"); - } - private static MPSolver createSolver(String solverType) { try { return new MPSolver("MIPDiet", MPSolver.OptimizationProblemType.valueOf(solverType)); @@ -93,6 +90,7 @@ public class KnapsackMIP { } public static void main(String[] args) { + Loader.loadNativeLibraries(); solve("CBC_MIXED_INTEGER_PROGRAMMING"); } } diff --git a/examples/contrib/LeastDiff.java b/examples/contrib/LeastDiff.java index 5cf1760c97..a3bcf1a292 100644 --- a/examples/contrib/LeastDiff.java +++ b/examples/contrib/LeastDiff.java @@ -12,17 +12,13 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.*; import java.io.*; import java.text.*; import java.util.*; public class LeastDiff { - - static { - System.loadLibrary("jniortools"); - } - /** Solves the Least Diff problem. See http://www.hakank.org/google_or_tools/least_diff.py */ private static void solve() { final int base = 10; @@ -90,6 +86,7 @@ public class LeastDiff { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); LeastDiff.solve(); } } diff --git a/examples/contrib/MagicSquare.java b/examples/contrib/MagicSquare.java index 7845c42076..faba18922d 100644 --- a/examples/contrib/MagicSquare.java +++ b/examples/contrib/MagicSquare.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.Solver; @@ -20,11 +21,6 @@ import java.text.*; import java.util.*; public class MagicSquare { - - static { - System.loadLibrary("jniortools"); - } - /** Solves the Magic Square problem. See http://www.hakank.org/google_or_tools/magic_square.py */ private static void solve(int n, int num) { @@ -112,6 +108,7 @@ public class MagicSquare { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); int n = 4; int num = 0; diff --git a/examples/contrib/Map.java b/examples/contrib/Map.java index efc273f2ff..23a5cbcb97 100644 --- a/examples/contrib/Map.java +++ b/examples/contrib/Map.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.*; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; @@ -21,14 +22,8 @@ import java.text.*; import java.util.*; public class Map { - - static { - System.loadLibrary("jniortools"); - } - /** Solves a simple map coloring problem. See http://www.hakank.org/google_or_tools/map.py */ private static void solve() { - Solver solver = new Solver("Map"); // @@ -90,6 +85,7 @@ public class Map { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); Map.solve(); } } diff --git a/examples/contrib/Map2.java b/examples/contrib/Map2.java index ecf383c87c..55262ccd61 100644 --- a/examples/contrib/Map2.java +++ b/examples/contrib/Map2.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.*; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; @@ -21,11 +22,6 @@ import java.text.*; import java.util.*; public class Map2 { - - static { - System.loadLibrary("jniortools"); - } - /** * Solves a simple map coloring problem, take II. See http://www.hakank.org/google_or_tools/map.py */ @@ -99,6 +95,7 @@ public class Map2 { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); Map2.solve(); } } diff --git a/examples/contrib/Minesweeper.java b/examples/contrib/Minesweeper.java index 5a92934980..9cba3c426e 100644 --- a/examples/contrib/Minesweeper.java +++ b/examples/contrib/Minesweeper.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.*; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; @@ -21,13 +22,7 @@ import java.text.*; import java.util.*; public class Minesweeper { - - static { - System.loadLibrary("jniortools"); - } - static int X = -1; - // // Default problem. // It has 4 solutions. @@ -200,6 +195,7 @@ public class Minesweeper { } // end readFile public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); String file = ""; if (args.length > 0) { diff --git a/examples/contrib/MultiThreadTest.java b/examples/contrib/MultiThreadTest.java index e8cc6e17e1..b2610f246b 100644 --- a/examples/contrib/MultiThreadTest.java +++ b/examples/contrib/MultiThreadTest.java @@ -1,5 +1,6 @@ package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.linearsolver.MPConstraint; import com.google.ortools.linearsolver.MPObjective; import com.google.ortools.linearsolver.MPSolver; @@ -15,14 +16,10 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class MultiThreadTest { - - static { - System.loadLibrary("jniortools"); - } - private static final boolean verboseOutput = false; // To enable Cbc logging public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); launchProtocol(10, 8, true); System.out.println("Cbc multi thread test successful"); return; diff --git a/examples/contrib/NQueens.java b/examples/contrib/NQueens.java index 4095b5b64a..eb85a86fe9 100644 --- a/examples/contrib/NQueens.java +++ b/examples/contrib/NQueens.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.Solver; @@ -20,14 +21,8 @@ import java.text.*; import java.util.*; public class NQueens { - - static { - System.loadLibrary("jniortools"); - } - /** Solves the N Queens problem. See http://www.hakank.org/google_or_tools/nqueens2.py */ private static void solve(int n, int num, int print) { - Solver solver = new Solver("NQueens"); System.out.println("n: " + n); @@ -87,6 +82,7 @@ public class NQueens { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); int n = 8; int num = 0; int print = 1; diff --git a/examples/contrib/NQueens2.java b/examples/contrib/NQueens2.java index 149e31937c..4b982e97e8 100644 --- a/examples/contrib/NQueens2.java +++ b/examples/contrib/NQueens2.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.Solver; @@ -20,14 +21,8 @@ import java.text.*; import java.util.*; public class NQueens2 { - - static { - System.loadLibrary("jniortools"); - } - /** Solves the N Queens problem. See http://www.hakank.org/google_or_tools/nqueens2.py */ private static void solve(int n, int num, int print) { - Solver solver = new Solver("NQueens"); System.out.println("n: " + n); @@ -81,6 +76,7 @@ public class NQueens2 { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); int n = 8; int num = 0; int print = 1; diff --git a/examples/contrib/Partition.java b/examples/contrib/Partition.java index 4005af2ea1..d65c39342d 100644 --- a/examples/contrib/Partition.java +++ b/examples/contrib/Partition.java @@ -21,6 +21,7 @@ */ package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.*; /** @@ -32,11 +33,6 @@ import com.google.ortools.constraintsolver.*; * @since 18/03/11 */ public class Partition { - - static { - System.loadLibrary("jniortools"); - } - /** Partition Problem. */ private static void solve(int m) { Solver solver = new Solver("Partition " + m); @@ -102,6 +98,7 @@ public class Partition { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); Partition.solve(32); } } diff --git a/examples/contrib/QuasigroupCompletion.java b/examples/contrib/QuasigroupCompletion.java index 38a327cf3d..45c9478cf5 100644 --- a/examples/contrib/QuasigroupCompletion.java +++ b/examples/contrib/QuasigroupCompletion.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.*; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; @@ -21,11 +22,6 @@ import java.text.*; import java.util.*; public class QuasigroupCompletion { - - static { - System.loadLibrary("jniortools"); - } - static int X = 0; /* @@ -201,6 +197,7 @@ public class QuasigroupCompletion { } // end readFile public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); if (args.length > 0) { String file = ""; diff --git a/examples/contrib/SendMoreMoney.java b/examples/contrib/SendMoreMoney.java index eb69c73ee6..664281e8db 100644 --- a/examples/contrib/SendMoreMoney.java +++ b/examples/contrib/SendMoreMoney.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.Solver; @@ -20,11 +21,6 @@ import java.text.*; import java.util.*; public class SendMoreMoney { - - static { - System.loadLibrary("jniortools"); - } - /** Solves the SEND+MORE=MONEY problem. */ private static void solve() { int base = 10; @@ -90,6 +86,7 @@ public class SendMoreMoney { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); SendMoreMoney.solve(); } } diff --git a/examples/contrib/SendMoreMoney2.java b/examples/contrib/SendMoreMoney2.java index ccff95431e..ed472b3003 100644 --- a/examples/contrib/SendMoreMoney2.java +++ b/examples/contrib/SendMoreMoney2.java @@ -12,22 +12,15 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.*; import java.io.*; import java.text.*; import java.util.*; public class SendMoreMoney2 { - static Solver sol; - - static { - System.loadLibrary("jniortools"); - } - - // // Some helper methods - // static IntExpr p(IntExpr a, int b, IntExpr c) { return sol.makeSum(sol.makeProd(a, b), c); } @@ -194,6 +187,7 @@ public class SendMoreMoney2 { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); for (int i = 0; i < 5; i++) { System.out.println("\nalternative #" + i); SendMoreMoney2.solve(i); diff --git a/examples/contrib/SendMostMoney.java b/examples/contrib/SendMostMoney.java index ad94f076bc..785a56fa0b 100644 --- a/examples/contrib/SendMostMoney.java +++ b/examples/contrib/SendMostMoney.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.*; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; @@ -21,17 +22,11 @@ import java.text.*; import java.util.*; public class SendMostMoney { - - static { - System.loadLibrary("jniortools"); - } - /** * Solves the SEND+MOST=MONEY problem, where we maximize MONEY. See * http://www.hakank.org/google_or_tools/send_more_money.py */ private static long solve(long MONEY) { - Solver solver = new Solver("SendMostMoney"); // @@ -128,6 +123,7 @@ public class SendMostMoney { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); System.out.println("Get the max value of money:"); long this_money = SendMostMoney.solve(0); System.out.println("\nThen find all solutions with this value:"); diff --git a/examples/contrib/Seseman.java b/examples/contrib/Seseman.java index 681b97f40a..d3d8ff1798 100644 --- a/examples/contrib/Seseman.java +++ b/examples/contrib/Seseman.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.Solver; @@ -20,14 +21,8 @@ import java.text.*; import java.util.*; public class Seseman { - - static { - System.loadLibrary("jniortools"); - } - /** Solves the Seseman convent problem. See http://www.hakank.org/google_or_tools/seseman.py */ private static void solve(int n) { - Solver solver = new Solver("Seseman"); // @@ -116,6 +111,7 @@ public class Seseman { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); int n = 3; if (args.length > 0) { n = Integer.parseInt(args[0]); diff --git a/examples/contrib/SetCovering.java b/examples/contrib/SetCovering.java index bb71381e85..a7dde55ecd 100644 --- a/examples/contrib/SetCovering.java +++ b/examples/contrib/SetCovering.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.OptimizeVar; @@ -21,14 +22,8 @@ import java.text.*; import java.util.*; public class SetCovering { - - static { - System.loadLibrary("jniortools"); - } - /** Solves a set covering problem. See http://www.hakank.org/google_or_tools/set_covering.py */ private static void solve() { - Solver solver = new Solver("SetCovering"); // @@ -102,6 +97,7 @@ public class SetCovering { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); SetCovering.solve(); } } diff --git a/examples/contrib/SetCovering2.java b/examples/contrib/SetCovering2.java index 0eaa4885f5..09eaba3e17 100644 --- a/examples/contrib/SetCovering2.java +++ b/examples/contrib/SetCovering2.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.OptimizeVar; @@ -21,14 +22,8 @@ import java.text.*; import java.util.*; public class SetCovering2 { - - static { - System.loadLibrary("jniortools"); - } - /** Solves a set covering problem. See http://www.hakank.org/google_or_tools/set_covering2.py */ private static void solve() { - Solver solver = new Solver("SetCovering2"); // @@ -113,6 +108,7 @@ public class SetCovering2 { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); SetCovering2.solve(); } } diff --git a/examples/contrib/SetCovering3.java b/examples/contrib/SetCovering3.java index 5e44ab7f16..1f2f3fb5d4 100644 --- a/examples/contrib/SetCovering3.java +++ b/examples/contrib/SetCovering3.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.OptimizeVar; @@ -21,14 +22,8 @@ import java.text.*; import java.util.*; public class SetCovering3 { - - static { - System.loadLibrary("jniortools"); - } - /** Solves a set covering problem. See http://www.hakank.org/google_or_tools/set_covering3.py */ private static void solve() { - Solver solver = new Solver("SetCovering3"); // @@ -120,6 +115,7 @@ public class SetCovering3 { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); SetCovering3.solve(); } } diff --git a/examples/contrib/SetCovering4.java b/examples/contrib/SetCovering4.java index 8452be818f..f0266ada28 100644 --- a/examples/contrib/SetCovering4.java +++ b/examples/contrib/SetCovering4.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.OptimizeVar; @@ -21,14 +22,8 @@ import java.text.*; import java.util.*; public class SetCovering4 { - - static { - System.loadLibrary("jniortools"); - } - /** Solves a set covering problem. See http://www.hakank.org/google_or_tools/set_covering4.py */ private static void solve(int set_partition) { - Solver solver = new Solver("SetCovering4"); // @@ -121,6 +116,7 @@ public class SetCovering4 { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); System.out.println("Set partition:"); SetCovering4.solve(1); System.out.println("\nSet covering:"); diff --git a/examples/contrib/SetCoveringDeployment.java b/examples/contrib/SetCoveringDeployment.java index dd10b6ede9..5250d36ee7 100644 --- a/examples/contrib/SetCoveringDeployment.java +++ b/examples/contrib/SetCoveringDeployment.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.OptimizeVar; @@ -21,17 +22,11 @@ import java.text.*; import java.util.*; public class SetCoveringDeployment { - - static { - System.loadLibrary("jniortools"); - } - /** * Solves a set covering deployment problem. See * http://www.hakank.org/google_or_tools/set_covering_deployment.py */ private static void solve() { - Solver solver = new Solver("SetCoveringDeployment"); // @@ -137,7 +132,7 @@ public class SetCoveringDeployment { } public static void main(String[] args) throws Exception { - + Loader.loadNativeLibraries(); SetCoveringDeployment.solve(); } } diff --git a/examples/contrib/SimpleRoutingTest.java b/examples/contrib/SimpleRoutingTest.java index 09cb485cdd..122db56e3a 100644 --- a/examples/contrib/SimpleRoutingTest.java +++ b/examples/contrib/SimpleRoutingTest.java @@ -1,5 +1,6 @@ package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.Assignment; import com.google.ortools.constraintsolver.FirstSolutionStrategy; import com.google.ortools.constraintsolver.RoutingIndexManager; @@ -10,12 +11,7 @@ import java.util.ArrayList; import java.util.function.LongBinaryOperator; public class SimpleRoutingTest { - // Static Add Library - static { - System.loadLibrary("jniortools"); - } - private ArrayList globalRes; private long globalResCost; private int[][] costMatrix; @@ -94,6 +90,7 @@ public class SimpleRoutingTest { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); int[][] values = new int[4][4]; values[0][0] = 0; values[0][1] = 5; diff --git a/examples/contrib/StableMarriage.java b/examples/contrib/StableMarriage.java index 849742ab48..f0c9d7845b 100644 --- a/examples/contrib/StableMarriage.java +++ b/examples/contrib/StableMarriage.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.Solver; @@ -20,17 +21,11 @@ import java.text.*; import java.util.*; public class StableMarriage { - - static { - System.loadLibrary("jniortools"); - } - /** * Solves some stable marriage problems. See * http://www.hakank.org/google_or_tools/stable_marriage.py */ private static void solve(long[][][] ranks, String problem_name) { - Solver solver = new Solver("StableMarriage"); // @@ -128,6 +123,7 @@ public class StableMarriage { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); // // From Pascal Van Hentenryck's OPL book diff --git a/examples/contrib/StiglerMIP.java b/examples/contrib/StiglerMIP.java index ebef2c4c20..8ef66d8f0d 100755 --- a/examples/contrib/StiglerMIP.java +++ b/examples/contrib/StiglerMIP.java @@ -20,6 +20,7 @@ */ package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.linearsolver.MPConstraint; import com.google.ortools.linearsolver.MPObjective; import com.google.ortools.linearsolver.MPSolver; @@ -28,10 +29,6 @@ import java.math.RoundingMode; import java.text.DecimalFormat; public class StiglerMIP { - static { - System.loadLibrary("jniortools"); - } - private static void solve(String solverType) { System.out.println("---- StiglerMIP with " + solverType); @@ -282,6 +279,7 @@ public class StiglerMIP { } public static void main(String[] args) { + Loader.loadNativeLibraries(); solve("SCIP"); solve("CBC"); solve("GLPK"); diff --git a/examples/contrib/Strimko2.java b/examples/contrib/Strimko2.java index f006f8437f..0027077fb8 100644 --- a/examples/contrib/Strimko2.java +++ b/examples/contrib/Strimko2.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.Solver; @@ -20,14 +21,8 @@ import java.text.*; import java.util.*; public class Strimko2 { - - static { - System.loadLibrary("jniortools"); - } - /** Solves a Strimko problem. See http://www.hakank.org/google_or_tools/strimko2.py */ private static void solve() { - Solver solver = new Solver("Strimko2"); // @@ -140,7 +135,7 @@ public class Strimko2 { } public static void main(String[] args) throws Exception { - + Loader.loadNativeLibraries(); Strimko2.solve(); } } diff --git a/examples/contrib/Sudoku.java b/examples/contrib/Sudoku.java index 6c196c95d0..1849e41278 100644 --- a/examples/contrib/Sudoku.java +++ b/examples/contrib/Sudoku.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.Solver; @@ -20,14 +21,8 @@ import java.text.*; import java.util.*; public class Sudoku { - - static { - System.loadLibrary("jniortools"); - } - /** Solves a Sudoku problem. */ private static void solve() { - Solver solver = new Solver("Sudoku"); int cell_size = 3; @@ -126,6 +121,7 @@ public class Sudoku { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); Sudoku.solve(); } } diff --git a/examples/contrib/SurvoPuzzle.java b/examples/contrib/SurvoPuzzle.java index d564e2eb39..3901ff449a 100644 --- a/examples/contrib/SurvoPuzzle.java +++ b/examples/contrib/SurvoPuzzle.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.*; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; @@ -21,14 +22,7 @@ import java.text.*; import java.util.*; public class SurvoPuzzle { - - static { - System.loadLibrary("jniortools"); - } - - /* - * default problem - */ + /* default problem */ static int default_r = 3; static int default_c = 4; static int[] default_rowsums = {30, 18, 30}; @@ -200,6 +194,7 @@ public class SurvoPuzzle { } // end readFile public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); if (args.length > 0) { String file = args[0]; diff --git a/examples/contrib/ToNum.java b/examples/contrib/ToNum.java index 7988552b62..341e14657b 100644 --- a/examples/contrib/ToNum.java +++ b/examples/contrib/ToNum.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.Solver; @@ -20,14 +21,8 @@ import java.text.*; import java.util.*; public class ToNum { - - static { - System.loadLibrary("jniortools"); - } - /** * toNum(solver, a, num, base) - * *

channelling between the array a and the number num */ private static void toNum(Solver solver, IntVar[] a, IntVar num, int base) { @@ -96,6 +91,7 @@ public class ToNum { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); ToNum.solve(); } } diff --git a/examples/contrib/WhoKilledAgatha.java b/examples/contrib/WhoKilledAgatha.java index 7a75b6ea2f..0b1afb60e3 100644 --- a/examples/contrib/WhoKilledAgatha.java +++ b/examples/contrib/WhoKilledAgatha.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.Solver; @@ -20,17 +21,11 @@ import java.text.*; import java.util.*; public class WhoKilledAgatha { - - static { - System.loadLibrary("jniortools"); - } - /** * Implements the Who killed Agatha problem. See * http://www.hakank.org/google_or_tools/who_killed_agatha.py */ private static void solve() { - Solver solver = new Solver("WhoKilledAgatha"); // @@ -190,6 +185,7 @@ public class WhoKilledAgatha { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); WhoKilledAgatha.solve(); } } diff --git a/examples/contrib/Xkcd.java b/examples/contrib/Xkcd.java index ac30c391ea..772d3503c3 100644 --- a/examples/contrib/Xkcd.java +++ b/examples/contrib/Xkcd.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.*; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; @@ -21,14 +22,8 @@ import java.text.*; import java.util.*; public class Xkcd { - - static { - System.loadLibrary("jniortools"); - } - /** Solves the xkcd problem. See http://www.hakank.org/google_or_tools/xkcd.py */ private static void solve() { - Solver solver = new Solver("Xkcd"); int n = 6; @@ -70,6 +65,7 @@ public class Xkcd { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); Xkcd.solve(); } } diff --git a/examples/contrib/YoungTableaux.java b/examples/contrib/YoungTableaux.java index 853ba61389..be58de4dda 100644 --- a/examples/contrib/YoungTableaux.java +++ b/examples/contrib/YoungTableaux.java @@ -12,6 +12,7 @@ // limitations under the License. package com.google.ortools.contrib; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.Solver; @@ -20,17 +21,11 @@ import java.text.*; import java.util.*; public class YoungTableaux { - - static { - System.loadLibrary("jniortools"); - } - /** * Implements Young tableaux and partitions. See * http://www.hakank.org/google_or_tools/young_tableuax.py */ private static void solve(int n) { - Solver solver = new Solver("YoungTableaux"); System.out.println("n: " + n); @@ -133,6 +128,7 @@ public class YoungTableaux { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); int n = 5; if (args.length > 0) { diff --git a/examples/java/CapacitatedVehicleRoutingProblemWithTimeWindows.java b/examples/java/CapacitatedVehicleRoutingProblemWithTimeWindows.java index b897e57800..2f9cf6e2a1 100644 --- a/examples/java/CapacitatedVehicleRoutingProblemWithTimeWindows.java +++ b/examples/java/CapacitatedVehicleRoutingProblemWithTimeWindows.java @@ -12,8 +12,9 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -package com.google.ortools.examples; +package com.google.ortools.java; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.Assignment; import com.google.ortools.constraintsolver.FirstSolutionStrategy; import com.google.ortools.constraintsolver.IntVar; @@ -50,11 +51,6 @@ class Pair { * using the swig-wrapped version of the vehicle routing library in src/constraint_solver. */ public class CapacitatedVehicleRoutingProblemWithTimeWindows { - - static { - System.loadLibrary("jniortools"); - } - private static Logger logger = Logger.getLogger(CapacitatedVehicleRoutingProblemWithTimeWindows.class.getName()); @@ -289,6 +285,7 @@ public class CapacitatedVehicleRoutingProblemWithTimeWindows { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); CapacitatedVehicleRoutingProblemWithTimeWindows problem = new CapacitatedVehicleRoutingProblemWithTimeWindows(); final int xMax = 20; diff --git a/examples/java/FlowExample.java b/examples/java/FlowExample.java index 5befc084ac..41943efc2f 100644 --- a/examples/java/FlowExample.java +++ b/examples/java/FlowExample.java @@ -10,21 +10,14 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -package com.google.ortools.examples; +package com.google.ortools.java; +import com.google.ortools.Loader; import com.google.ortools.graph.MaxFlow; import com.google.ortools.graph.MinCostFlow; -/** - * Sample showing how to model using the flow solver. - * - */ - +/** Sample showing how to model using the flow solver. */ public class FlowExample { - static { - System.loadLibrary("jniortools"); - } - private static void solveMinCostFlow() { System.out.println("Min Cost Flow Problem - Simple interface"); final int numSources = 4; @@ -83,6 +76,7 @@ public class FlowExample { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); FlowExample.solveMinCostFlow(); FlowExample.solveMaxFlow(); } diff --git a/examples/java/IntegerProgramming.java b/examples/java/IntegerProgramming.java index aec090ccb9..c32c2e6697 100644 --- a/examples/java/IntegerProgramming.java +++ b/examples/java/IntegerProgramming.java @@ -10,24 +10,16 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. +package com.google.ortools.java; -package com.google.ortools.examples; - +import com.google.ortools.Loader; import com.google.ortools.linearsolver.MPConstraint; import com.google.ortools.linearsolver.MPObjective; import com.google.ortools.linearsolver.MPSolver; import com.google.ortools.linearsolver.MPVariable; -/** - * Integer programming example that shows how to use the API. - * - */ - +/** Integer programming example that shows how to use the API. */ public class IntegerProgramming { - static { - System.loadLibrary("jniortools"); - } - private static void runIntegerProgrammingExample(String solverType) { MPSolver solver = MPSolver.createSolver(solverType); if (solver == null) { @@ -79,6 +71,7 @@ public class IntegerProgramming { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); System.out.println("---- Integer programming example with SCIP (recommended) ----"); runIntegerProgrammingExample("SCIP"); System.out.println("---- Integer programming example with CBC ----"); diff --git a/examples/java/LinearAssignmentAPI.java b/examples/java/LinearAssignmentAPI.java index d7f6a834c8..fe6e529fec 100644 --- a/examples/java/LinearAssignmentAPI.java +++ b/examples/java/LinearAssignmentAPI.java @@ -10,22 +10,17 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -package com.google.ortools.examples; +package com.google.ortools.java; +import com.google.ortools.Loader; import com.google.ortools.graph.LinearSumAssignment; /** * Test assignment on a 4x4 matrix. Example taken from * http://www.ee.oulu.fi/~mpa/matreng/eem1_2-1.htm with kCost[0][1] * modified so the optimum solution is unique. - * */ - public class LinearAssignmentAPI { - static { - System.loadLibrary("jniortools"); - } - private static void runAssignmentOn4x4Matrix() { final int numSources = 4; final int numTargets = 4; @@ -52,6 +47,7 @@ public class LinearAssignmentAPI { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); LinearAssignmentAPI.runAssignmentOn4x4Matrix(); } } diff --git a/examples/java/LinearProgramming.java b/examples/java/LinearProgramming.java index d190f4a390..01fe09f011 100644 --- a/examples/java/LinearProgramming.java +++ b/examples/java/LinearProgramming.java @@ -10,9 +10,9 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. +package com.google.ortools.java; -package com.google.ortools.examples; - +import com.google.ortools.Loader; import com.google.ortools.linearsolver.MPConstraint; import com.google.ortools.linearsolver.MPObjective; import com.google.ortools.linearsolver.MPSolver; @@ -20,14 +20,8 @@ import com.google.ortools.linearsolver.MPVariable; /** * Linear programming example that shows how to use the API. - * */ - public class LinearProgramming { - static { - System.loadLibrary("jniortools"); - } - private static void runLinearProgrammingExample(String solverType, boolean printModel) { MPSolver solver = MPSolver.createSolver(solverType); if (solver == null) { @@ -115,6 +109,7 @@ public class LinearProgramming { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); System.out.println("---- Linear programming example with GLOP (recommended) ----"); runLinearProgrammingExample("GLOP", true); System.out.println("---- Linear programming example with CLP ----"); diff --git a/examples/java/RabbitsPheasants.java b/examples/java/RabbitsPheasants.java index 5a17b72325..73aeefce7d 100644 --- a/examples/java/RabbitsPheasants.java +++ b/examples/java/RabbitsPheasants.java @@ -10,25 +10,19 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -package com.google.ortools.examples; +package com.google.ortools.java; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.ConstraintSolverParameters; import com.google.ortools.constraintsolver.DecisionBuilder; import com.google.ortools.constraintsolver.IntVar; import com.google.ortools.constraintsolver.Solver; import java.util.logging.Logger; -/** - * Sample showing how to model using the constraint programming solver. - * - */ +/** Sample showing how to model using the constraint programming solver.*/ public class RabbitsPheasants { private static Logger logger = Logger.getLogger(RabbitsPheasants.class.getName()); - static { - System.loadLibrary("jniortools"); - } - /** * Solves the rabbits + pheasants problem. We are seing 20 heads * and 56 legs. How many rabbits and how many pheasants are we thus @@ -55,6 +49,7 @@ public class RabbitsPheasants { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); boolean traceSearch = args.length > 0 && args[1].equals("--trace"); RabbitsPheasants.solve(traceSearch); } diff --git a/examples/java/RandomTsp.java b/examples/java/RandomTsp.java index c47524a04d..28913fbe40 100644 --- a/examples/java/RandomTsp.java +++ b/examples/java/RandomTsp.java @@ -1,4 +1,3 @@ -// // Copyright 2010-2017 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -12,8 +11,9 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -package com.google.ortools.examples; +package com.google.ortools.java; +import com.google.ortools.Loader; import com.google.ortools.constraintsolver.Assignment; import com.google.ortools.constraintsolver.FirstSolutionStrategy; import com.google.ortools.constraintsolver.RoutingIndexManager; @@ -28,11 +28,7 @@ import java.util.function.LongBinaryOperator; import java.util.function.LongUnaryOperator; import java.util.logging.Logger; -class RandomTsp { - static { - System.loadLibrary("jniortools"); - } - +public class RandomTsp { private static Logger logger = Logger.getLogger(RandomTsp.class.getName()); @@ -122,6 +118,7 @@ class RandomTsp { } public static void main(String[] args) throws Exception { + Loader.loadNativeLibraries(); int size = 10; if (args.length > 0) { size = Integer.parseInt(args[0]); diff --git a/makefiles/Makefile.java.mk b/makefiles/Makefile.java.mk index 6e4d72eec5..c08b9c5b10 100644 --- a/makefiles/Makefile.java.mk +++ b/makefiles/Makefile.java.mk @@ -365,20 +365,6 @@ $(CLASS_DIR)/%: $(TEST_DIR)/%.java $(JAVA_ORTOOLS_JAR) | $(CLASS_DIR) -cp $(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar \ $(TEST_PATH)$S$*.java -$(CLASS_DIR)/%: $(JAVA_EX_DIR)/%.java $(JAVA_ORTOOLS_JAR) | $(CLASS_DIR) - -$(DELREC) $(CLASS_DIR)$S$* - -$(MKDIR_P) $(CLASS_DIR)$S$* - "$(JAVAC_BIN)" -encoding UTF-8 -d $(CLASS_DIR)$S$* \ - -cp $(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar \ - $(JAVA_EX_PATH)$S$*.java - -$(CLASS_DIR)/%: $(CONTRIB_EX_DIR)/%.java $(JAVA_ORTOOLS_JAR) | $(CLASS_DIR) - -$(DELREC) $(CLASS_DIR)$S$* - -$(MKDIR_P) $(CLASS_DIR)$S$* - "$(JAVAC_BIN)" -encoding UTF-8 -d $(CLASS_DIR)$S$* \ - -cp $(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar \ - $(CONTRIB_EX_PATH)$S$*.java - $(LIB_DIR)/%$J: $(CLASS_DIR)/% | $(LIB_DIR) -$(DEL) $(LIB_DIR)$S$*.jar "$(JAR_BIN)" cvf $(LIB_DIR)$S$*.jar -C $(CLASS_DIR)$S$* . @@ -388,16 +374,6 @@ rjava_%: $(TEST_DIR)/%.java $(LIB_DIR)/%$J FORCE -cp $(LIB_DIR)$S$*$J$(CPSEP)$(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar \ $* $(ARGS) -rjava_%: $(JAVA_EX_DIR)/%.java $(LIB_DIR)/%$J FORCE - "$(JAVA_BIN)" -Xss2048k $(JAVAFLAGS) \ - -cp $(LIB_DIR)$S$*$J$(CPSEP)$(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar \ - com.google.ortools.examples.$* $(ARGS) - -rjava_%: $(CONTRIB_EX_DIR)/%.java $(LIB_DIR)/%$J FORCE - "$(JAVA_BIN)" -Xss2048k $(JAVAFLAGS) \ - -cp $(LIB_DIR)$S$*$J$(CPSEP)$(LIB_DIR)$Scom.google.ortools.jar$(CPSEP)$(LIB_DIR)$Sprotobuf.jar \ - com.google.ortools.contrib.$* $(ARGS) - .PHONY: test_java_algorithms_samples # Build and Run all Java Algorithms Samples (located in ortools/algorithms/samples) test_java_algorithms_samples: \ rjava_Knapsack @@ -676,6 +652,52 @@ endef $(foreach sample,$(SAMPLES),$(eval $(call java-sample-target,$(sample),$(subst _,,$(sample))))) +EXAMPLES := contrib java + +define java-example-target +$$(TEMP_JAVA_DIR)/$1: | $$(TEMP_JAVA_DIR) + -$$(MKDIR) $$(TEMP_JAVA_DIR)$$S$1 + +$$(TEMP_JAVA_DIR)/$1/%: \ + $$(SRC_DIR)/examples/$1/%.java \ + | $$(TEMP_JAVA_DIR)/$1 + -$$(MKDIR) $$(TEMP_JAVA_DIR)$$S$1$$S$$* + +$$(TEMP_JAVA_DIR)/$1/%/pom.xml: \ + $${SRC_DIR}/ortools/java/pom-sample.xml.in \ + | $$(TEMP_JAVA_DIR)/$1/% + $$(SED) -e "s/@JAVA_PACKAGE@/$$(JAVA_ORTOOLS_PACKAGE)/" \ + ortools$$Sjava$$Spom-sample.xml.in \ + > $$(TEMP_JAVA_DIR)$$S$1$$S$$*$$Spom.xml + $$(SED) -i -e 's/@JAVA_SAMPLE_PROJECT@/$$*/' \ + $$(TEMP_JAVA_DIR)$$S$1$$S$$*$$Spom.xml + $$(SED) -i -e 's/@PROJECT_VERSION@/$$(OR_TOOLS_VERSION)/' \ + $$(TEMP_JAVA_DIR)$$S$1$$S$$*$$Spom.xml + $$(SED) -i -e 's/@JAVA_PROJECT@/$$(JAVA_ORTOOLS_PROJECT)/' \ + $$(TEMP_JAVA_DIR)$$S$1$$S$$*$$Spom.xml + +$$(TEMP_JAVA_DIR)/$1/%/$$(JAVA_SRC_DIR)/%.java: \ + $$(SRC_DIR)/examples/$1/%.java \ + | $$(TEMP_JAVA_DIR)/$1/% + $$(MKDIR_P) $$(TEMP_JAVA_DIR)$$S$1$$S$$*$$S$$(JAVA_SRC_PATH) + $$(COPY) $$(SRC_DIR)$$Sexamples$$S$1$$S$$*.java \ + $$(TEMP_JAVA_DIR)$$S$1$$S$$*$$S$$(JAVA_SRC_PATH) + +rjava_%: \ + java_package \ + $$(SRC_DIR)/examples/$1/%.java \ + $$(TEMP_JAVA_DIR)/$1/%/pom.xml \ + $$(TEMP_JAVA_DIR)/$1/%/$$(JAVA_SRC_DIR)/%.java \ + FORCE + cd $$(TEMP_JAVA_DIR)$$S$1$$S$$* && "$$(MVN_BIN)" compile + cd $$(TEMP_JAVA_DIR)$$S$1$$S$$* && "$$(MVN_BIN)" exec:java \ + -Dexec.mainClass=com.google.ortools.$1.$$* $$(ARGS) + +endef + +$(foreach example,$(EXAMPLES),$(eval $(call java-example-target,$(example)))) + + ############# ## DEBUG ## #############