如何从 cmd Notepad ++的插件NppExec 正确运行JavaFX应用程序?我之前在Notepad ++插件NppExec(基本内置cmd)上使用了命令java $(NAME_PART)
来运行java,它对于基于swing的程序运行良好。但是,当我使用该命令运行JavaFX应用程序时,我的Notepad ++窗口似乎失去了焦点,好像打开了一个新窗口但没有出现任何内容。
我用来测试的代码(最初从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);
}
}
答案 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)"