2014-09-11 120 views
1

如何从 cmd正确运行JavaFX应用程序 Notepad ++的插件NppExec?我之前在Notepad ++插件NppExec(基本上是,基本上是一个内置的cmd)上使用命令java $(NAME_PART)来运行java,这对于基于swing的程序来说工作得很好。但是,当我使用该命令运行JavaFX应用程序时,我的Notepad ++窗口似乎失去了焦点,就好像打开了一个新窗口,但没有显示任何内容。如何从Notepad ++运行JavaFX应用程序? (仅以.jar文件运行)

编辑:我发现问题出在记事本++插件NppExec从cmd测试相同的命令后。运行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); 
    } 
} 
+0

你的主要方法在哪里? – ItachiUchiha 2014-09-11 06:19:18

+0

我是JavaFX的新手,所以如果我不正确,请原谅我,但我相信JavaFX应用程序不需要主要方法。 – ATH 2014-09-11 06:22:42

+0

@ATH是正确的,JavaFX应用程序不需要main。一些IDE或工具可能会期望主要允许应用程序在IDE环境中执行。另外,有时候缺少主要的东西会让期望看到主要内容的开发者感到困惑,所以最好始终在应用中包含主要内容,即使它只是调用启动方法。 – jewelsea 2014-09-11 09:31:29

回答

2

回答我的问题。

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

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