如何从Notepad ++运行JavaFX应用程序? (仅作为.jar文件运行)

时间:2014-09-11 05:01:32

标签: java javafx notepad++ nppexec

如何从 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);
    }
}

2 个答案:

答案 0 :(得分:3)

回答我自己的问题。

来自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程序失败但我不认为这个问题属于这里。

答案 1 :(得分:0)

我让这个工作:

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)"