如何在 java swing 中运行 shell 命令行?

编程


我是 Debian Linux 12 上的初学者 java 程序员(后来也可能在 FreeBSD 14 上),我想制作一个小型应用程序 Java Swing 启动器来启动一些 Java Web 服务器,如 Jetty、Glassfish 和 Wildfly 用于 Web 开发并运行一些 HTML 5个模板(测试它们在每个Java Web服务器中的运行方式)。我找到了两个Java源代码(一个用于制作Java Swing界面,另一个用于运行unix shell脚本)唯一的事情是我不知道如何集成或如何使 java 在 Java Swing 应用程序中运行 unix 命令。 有可能吗? 还有什么方法可以创建一个新按钮来停止 Java Server Launcher 的进程? ,这是 Java Server Launcher 的代码:

爪哇
import java.awt.*;
import javax.swing.*;

public class JavaServerLauncher {

    static JFrame frame;
    static JPanel panel, panelData;
    static JMenuBar menuBar;
    static JMenu menuFile, menuSetting, menuOption;
    static JMenuItem itemNew, itemOpen, itemSave, itemPrint, itemOption, itemClose, itemView, itemReports;
    static JToolBar toolBar;
    static Icon iconMenu = UIManager.getIcon("html.pendingImage");
    static JButton barSave, barEdit, barClear, barDelete;
    static ButtonGroup group;
    static JRadioButtonMenuItem subFont1, subFont2, subFont3, subFont4, subFont5;
    static JCheckBoxMenuItem checkPrefer;
    static JLabel label;
    static JTextField textFirst, textMiddle, textLast;
    static JCheckBox checkGender;

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                gui();
            }
        });
    }

    public static void gui() {

        frame = new JFrame("Java Server Launcher for Debian Linux");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(550, 300);

        JavaServerLauncher myMenu = new JavaServerLauncher();
        myMenu.myMenuBar();
        myMenu.myToolBar();
        frame.setJMenuBar(menuBar);
        frame.add(toolBar, BorderLayout.SOUTH);

        frame.pack();
        frame.setVisible(true);
    }

    public void myToolBar() {

        toolBar = new JToolBar(JToolBar.HORIZONTAL);
        frame.add(toolBar);


        barSave = new JButton("Apache TomCat", iconMenu);
        toolBar.add(barSave);

        barEdit = new JButton("Jetty Server", iconMenu);
        toolBar.add(barEdit);

        barClear = new JButton("GlassFish 7", iconMenu);
        toolBar.add(barClear);

        barDelete = new JButton("Wild Fly", iconMenu);
        toolBar.add(barDelete);
        
        barDelete = new JButton("Turn Off", iconMenu);
        toolBar.add(barDelete);
    }

    public void myMenuBar() {
        menuBar = new JMenuBar();
        frame.setJMenuBar(menuBar);

    }
}

我尝试过的:

我在一些网页上检查过谷歌,但没有答案,一些用户告诉我 Process Builder,但我找不到带有 Java Swing 的 Process Builder 的任何源代码。

解决方案1

正如已经向您建议的那样,您需要使用 ProcessBuilder(Java SE 18 和 JDK 18)[^]。 该文档展示了如何构建命令并使用该命令和关联的类来启动它。 这是带有示例代码的教程: https://www.baeldung.com/java-lang-processbuilder-api[^]。

コメント

タイトルとURLをコピーしました