【问题标题】:How to run JavaFX application from Notepad++? (Only runs as .jar file)如何从 Notepad++ 运行 JavaFX 应用程序? (仅作为 .jar 文件运行)
【发布时间】:2014-11-04 22:16:59
【问题描述】:

如何从 cmd Notepad++ 的插件 NppExec 正确运行 JavaFX 应用程序?我之前在 Notepad++ 插件 NppExec(它基本上是一个内置的 cmd)上使用了命令 java $(NAME_PART) 来运行 java,它适用于基于 swing 的程序。但是,当我使用该命令运行 JavaFX 应用程序时,我的 Notepad++ 窗口似乎失去焦点,好像打开了一个新窗口但没有出现任何内容。

编辑:在从 cmd 测试相同的命令后,我发现问题出在 Notepad++ 插件 NppExec 上。运行 JavaFX 应用程序时,NppExec 的功能似乎与 cmd 不同。

我用来测试的代码(最初来自http://docs.oracle.com/javase/8/javafx/api/javafx/application/Application.html)将根据上面的编辑进行更新:

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;

public class MyApp extends Application {
    public void start(Stage stage) {
        Circle circ = new Circle(40, 40, 30);
        Group root = new Group(circ);
        Scene scene = new Scene(root, 400, 300);

        stage.setTitle("My JavaFX Application");
        stage.setScene(scene);
        stage.show();
    }
    //not required but recommended
    public static void main(String[] args) {
        launch(args);
    }
}

【问题讨论】:

  • 你的主要方法在哪里?
  • 我是 JavaFX 新手,如果我不正确请见谅,但我相信 JavaFX 应用程序不需要 main 方法。
  • @ATH 是正确的,JavaFX 应用程序不需要 main。某些 IDE 或工具可能希望 main 允许从 IDE 环境中执行应用程序。此外,有时缺少 main 会使希望看到 main 的开发人员感到困惑,因此最好始终在您的应用中包含 main,即使它所做的只是调用启动方法。
  • 啊..我从来没有试过!这是我第一次尝试它,它也可以在没有 main 的情况下工作

标签: java javafx notepad++ nppexec


【解决方案1】:

回答我自己的问题。

来自 NppExec 的手册,

- NppExec is not a command interpreter. NppExec does not understand such commands as 'copy', 'call', 'for' and so on because it is neither a "real" console nor a console emulator. However, NppExec has its own internal implementation of such commands as 'cls', 'cd', 'dir', 'echo', 'set' ('env_set') and introduces other, specific, commands. Also you can use "cmd /c <command>" to execute any cmd's command inside NppExec.

使用cmd /c java $(NAME_PART) 而不是java $(NAME_PART) 运行成功。

仍然不确定为什么简单地调用 java $(NAME_PART) 对非 JavaFX 程序有效,但对 JavaFX 程序失败,但我认为问题不属于这里。

【讨论】:

    【解决方案2】:

    我得到了这个工作:

    npp_save
    cd "$(CURRENT_DIRECTORY)"
    C:\Program Files\Java\jdk1.8.0_131\bin\javac "$(FILE_NAME)"
    cmd /c cd "$(CURRENT_DIRECTORY)" && java "$(NAME_PART)"
    

    关键是能够在一行上运行两个命令。 && 表达式就是这样做的。 如果您想知道,如果第一个命令未成功执行,则第二个命令将不会运行。

    确保您的计算机上的环境变量中有 Java。如果不这样做,则必须提供 Java 可执行文件的完整路径。

    npp_save
    cd "$(CURRENT_DIRECTORY)"
    C:\Program Files\Java\jdk1.8.0_131\bin\javac "$(FILE_NAME)"
    cmd /c cd "$(CURRENT_DIRECTORY)" && "C:\Program Files\Java\jdk1.8.0_131\java.exe" "$(NAME_PART)"
    

    【讨论】:

      猜你喜欢
      • 2017-05-21
      • 2016-11-05
      • 1970-01-01
      • 2020-09-19
      • 2021-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-15
      相关资源
      最近更新 更多