1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
// methode 07
@FXML
private void executerFichierJava02() {
//
System.out.println("");
System.out.println("method: executerFichierJava02()");
System.out.println("create 1 Service and 1 Task");
System.out.println("return 1 ProcessBuilder to");
System.out.println("execute 1 Java class (from project JavaFX_Test02_Desvstory)");
final Service<Integer> service01 = new Service<Integer>() {
// --- step 03, override createTask() method
@Override
protected Task<Integer> createTask() {
return new Task<Integer>() {
// --- step 04, override call() method
@Override
protected Integer call() throws Exception {
// Java link: /usr/lib/jvm/java-17-openjdk-amd64/bin/java
// JRE java-17-openJDK
/*
try {
// Class.forName("applicationShowDate.Main.java");
// Class.forName("/media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test02_Desvstory/src/applicationShowDate/Main.java");
}
catch (ClassNotFoundException cnfe) {
cnfe.printStackTrace();
}
*/
// compilation: 14 errors
// ProcessBuilder process01 = new ProcessBuilder("/usr/bin/javac", "Main.java");
// service 01, failed
// ProcessBuilder process01 = new ProcessBuilder("/usr/bin/java --module-path /usr/lib/jvm/java-17-openjdk-amd64/lib/jrt-fs.jar\" --add-modules=javafx.controls.jar --add-modules=javafx.base.jar --add-modules=javafx.fxml.jar --add-modules=javafx.graphics.jar --add-modules=javafx.media.jar --add-modules=javafx.swing.jar --add-modules=javafx.web", "Main.java");
// service 01, failed
// ProcessBuilder process01 = new ProcessBuilder("/usr/bin/java --module-path /usr/lib/jvm/java-17-openjdk-amd64/lib/jrt-fs.jar --add-modules=javafx.controls.jar --add-modules=javafx.base.jar --add-modules=javafx.fxml.jar --add-modules=javafx.graphics.jar --add-modules=javafx.media.jar --add-modules=javafx.swing.jar --add-modules=javafx.web", "Main.java");
// service 01, failed
// ProcessBuilder process01 = new ProcessBuilder("/usr/bin/java --module-path /usr/lib/jvm/java-17-openjdk-amd64/lib/jrt-fs.jar --add-modules=javafx.controls.jar --add-modules=javafx.base.jar --add-modules=javafx.fxml.jar --add-modules=javafx.graphics.jar --add-modules=javafx.media.jar --add-modules=javafx.swing.jar --add-modules=javafx.web, --add-modules=javafx-swt.jar", "Main.java");
// service 01, failed
// ProcessBuilder process01 = new ProcessBuilder("/usr/bin/javac --module-path /usr/lib/jvm/java-17-openjdk-amd64/lib/jrt-fs.jar\" --add-modules=javafx.controls.jar --add-modules=javafx.base.jar --add-modules=javafx.fxml.jar --add-modules=javafx.graphics.jar --add-modules=javafx.media.jar --add-modules=javafx.swing.jar --add-modules=javafx.web", "Main.java");
// service 01, failed
// ProcessBuilder process01 = new ProcessBuilder("/usr/bin/javac -cp /usr/lib/jvm/java-17-openjdk-amd64/lib/jrt-fs.jar:/usr/lib/jvm/liberica_full_JDK18/lib/javafx.controls.jar:/usr/lib/jvm/liberica_full_JDK18/lib/javafx.base.jar:/usr/lib/jvm/liberica_full_JDK18/lib/javafx.fxml.jar:/usr/lib/jvm/liberica_full_JDK18/lib/javafx.graphics.jar:/usr/lib/jvm/liberica_full_JDK18/lib/javafx.media.jar:/usr/lib/jvm/liberica_full_JDK18/lib/javafx.swing.jar:/usr/lib/jvm/liberica_full_JDK18/lib/javafx.web", "Main.java");
// service 01, failed
// ProcessBuilder process01 = new ProcessBuilder("/usr/bin/java --module-path /usr/lib/jvm/java-17-openjdk-amd64/lib/jrt-fs\" --add-modules=javafx.controls --add-modules=javafx.base --add-modules=javafx.fxml --add-modules=javafx.graphics --add-modules=javafx.media --add-modules=javafx.swing --add-modules=javafx.web", "Main.java");
// service 01, failed
// ProcessBuilder process01 = new ProcessBuilder("/usr/bin/java --module-path /usr/lib/jvm/java-17-openjdk-amd64/lib/jrt-fs --add-modules=javafx.controls --add-modules=javafx.base --add-modules=javafx.fxml --add-modules=javafx.graphics --add-modules=javafx.media --add-modules=javafx.swing --add-modules=javafx.web, --add-modules=javafx-swt", "Main.java");
// service 01, failed
// ProcessBuilder process01 = new ProcessBuilder("/usr/bin/java --module-path /usr/lib/jvm/java-17-openjdk-amd64/lib/jrt-fs --add-modules javafx.controls,javafx.base,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web,javafx-swt", "Main.java");
// apres ajout des javafx-sdk-18.0.1 ds le rep /usr/lib/jvm/java-17-openjdk-amd64/lib/
// service 01, failed
// ProcessBuilder process01 = new ProcessBuilder("/usr/bin/java --module-path /usr/lib/jvm/java-17-openjdk-amd64/lib/javafx-sdk-18.0.1/lib --add-modules javafx.controls,javafx.fxml", "Main.java");
// compilation: 14 errors
ProcessBuilder process01 = new ProcessBuilder("/usr/bin/java", "Main.java");
//
// process01.directory(new File("/media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test02_Desvstory/src/applicationShowDate/"));
//
process01.directory(new File("../JavaFX_Test02_Desvstory/src/applicationShowDate/"));
//
return process01
.inheritIO()
.start()
.waitFor();
}
};
}
};
// --------------------------------------------------------
//
// 2° possibilité, en utilisant des callbacks
service01.setOnReady(event -> {
System.out.println("par le callback, service 01 ready");
});
service01.setOnScheduled(event -> {
System.out.println("par le callback, service 01 scheduled");
});
service01.setOnRunning(event -> {
System.out.println("par le callback, service 01 running...");
});
service01.setOnSucceeded(event -> {
System.out.println("par le callback, service 01, etat, success");
});
service01.setOnFailed(event -> {
System.out.println("par le callback, service 01, etat, failed");
});
service01.setOnCancelled(event -> {
System.out.println("par le callback, service 01, etat, cancelled");
});
// --------------------------------------------------------
// demarrer l'instance de Service
// la variable portée class
// prend la valeur de la variable portée locale
serviceB = service01;
// on demarre l'instance service de Service
serviceB.start();
} |