import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import java.io.File;
public class PDIStarter extends Application {
@Override
public void start(Stage primaryStage) {
Button startCarteBtn = new Button("启动 Carte 服务");
Button startSpoonBtn = new Button("启动 Spoon");
Button stopAllBtn = new Button("停止所有服务");
startCarteBtn.setOnAction(e -> startCarte());
startSpoonBtn.setOnAction(e -> startSpoon());
stopAllBtn.setOnAction(e -> stopAllServices());
VBox root = new VBox(10, startCarteBtn, startSpoonBtn, stopAllBtn);
Scene scene = new Scene(root, 300, 200);
primaryStage.setTitle("PDI 服务控制器");
primaryStage.setScene(scene);
primaryStage.show();
}
private void startCarte() {
try {
// 设置编码环境变量
ProcessBuilder pb = new ProcessBuilder(
"cmd.exe", "/c",
"chcp", "65001", "&&",
"set", "JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8", "&&",
"set", "KETTLE_NATIVE=Y", "&&",
"cd", "/d", "D:\\dev_install\\pdi-ce-9.4.0.0-343\\data-integration", "&&",
"start", "carte.bat", "127.0.0.1", "8819"
);
pb.start();
System.out.println("Carte 服务启动中...");
} catch (Exception e) {
e.printStackTrace();
}
}
private void startSpoon() {
try {
ProcessBuilder pb = new ProcessBuilder(
"cmd.exe", "/c",
"chcp", "65001", "&&",
"set", "JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8", "&&",
"set", "KETTLE_NATIVE=Y", "&&",
"cd", "/d", "D:\\dev_install\\pdi-ce-9.4.0.0-343\\data-integration", "&&",
"start", "spoon.bat"
);
pb.start();
System.out.println("Spoon 启动中...");
} catch (Exception e) {
e.printStackTrace();
}
}
private void stopAllServices() {
try {
ProcessBuilder pb = new ProcessBuilder(
"cmd.exe", "/c",
"taskkill", "/f", "/im", "java.exe",
"&&", "taskkill", "/f", "/im", "spoon.bat"
);
pb.start();
System.out.println("已停止所有服务");
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}