java - 从 JFrame (linux) (eclipse) 运行可执行文件

标签 java linux eclipse swing executable

我正在尝试在我的 JFrame GUI 中运行一个名为 src2srcml 的基于 linux 的可执行文件,它获取一个源文件(C、C++、Java)并将其转换为一个 XML 文件以备后用。我的 GUI 成功地使用 JFileChooser 来定位和选择源文件。

我目前正在尝试使用 Runtime.getRuntime().exec() 函数来运行可执行文件,但到目前为止没有任何反应。我可以使用命令“bash-4.1$ ./src2srcml --position sum_avg.c -o hooray.c.xml”从命令行运行它,它获取源文件 sum_avg.c,将其转换为新的 XML文件 hooray.c.xml 但是当我在 Runtime.getRuntime().exec() 中尝试完全相同的命令时,没有任何反应。我不是特别熟悉 Runtime.getRuntime().exec() 或 ProcessBuilder 类。我是否需要先导航到可执行文件所在的位置?我还尝试在第一个参数中包含路径,调用可执行文件本身,但这也不起作用。

//--- 'Run Source Code' Button---//
    JButton btnRunSourceCode = new JButton("Run Source Code");
    btnRunSourceCode.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            if(filePath == null){
                textArea.setText("Please Load a source file (C, C++, Java)");                   
            }
            try{

                textArea.setText("Converting Source Code to XML");
                String[] commands = {"./src2srcml", "--position ", selectedFile.getName(), " -o targetFile.xml"};
                Process src2XML = Runtime.getRuntime().exec(commands);
                src2XML.waitFor();
                }
            catch(Exception exc){/*src2srcml Fail*/}
            }
    });
    btnRunSourceCode.setBounds(612, 39, 156, 25);
    contentPane.add(btnRunSourceCode);

当前可执行文件位于我的项目 (Eclipse) 的工作区中。当一切正常时,我想将整个程序编译成一个可执行文件,以便将 src2srcml 嵌入到我的可执行文件中,而不需要单独使用。这可能吗?

提前感谢您的任何想法!

最佳答案

我不熟悉 Unix,但是,你不需要通过 unix shell 来调用它吗,或许可以通过使用你的命令数组调用 bash 或其他 shell 命令?例如答案 here

其他问题

  • 线程:您当前要求您的进程在 Swing 事件线程上运行,如果成功将导致您的 GUI 完全卡住并且在进程结束之前无法使用。您应该对 GUI 线程进行类似此后台的所有调用,例如可以通过使用 SwingWorker 对象来实现。
  • GUI 错误:您在 JButton 上调用 setBounds 并添加到可能使用空布局的容器中,这将其标记为来自 Swing 新手的代码,因为这意味着您正在制作非常困难的不灵活的 GUI升级或增强。使用布局管理器来放置您的组件。 Swing 布局管理器将帮助您展示如何解决此问题。

关于

when I get everything working I would like to compile the whole program into a single executable so that the src2srcml is embedded into my executable and isn't required separately.

不,这可能是不可能的,除非您在 jar 中包含该文件以及解压缩它的代码。

关于java - 从 JFrame (linux) (eclipse) 运行可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25817092/

相关文章:

c++ - "No such file or directory"链接器错误,LD_LIBRARY_PATH 设置正确

eclipse - 如何将 eclipse 开发平台移动到 ubuntu 上

java - 无法在 Eclipse 中连接到 VM

java - Apache 眨眼抛弃

java - 如何使用 QuickBooks Online Java SDK 创建发票实体

linux - 与 shell 脚本文件有关的奇怪问题

java - ResourcesPlugin - 是否可以更改工作区?

java - 强制初始化 Java 中的枚举类型

java - 在对象的情况下使用final关键字

linux - 在不使用 grep -w 的情况下在 QNX 中查找完全匹配项