【问题标题】:Java compile and run using notepad++ and nppexecJava 使用 notepad++ 和 nppexec 编译和运行
【发布时间】:2013-06-20 01:58:12
【问题描述】:

请记住,在 windows shell 中编译是有效的,所以这个问题作为 PATH 问题的可能性很小(如果不是零)。

我花了很多时间研究如何做到这一点,我在网上找到的所有结果都说你可以做到:

NPP_SAVE
javac $(FILE_NAME)
java $(NAME_PART)

但这对我不起作用。在 NPP_EXEC 控制台中,我可以输入 java,并像从 cmd 中一样得到正常的结果,但是每当我输入 javac 时,我都会得到可怕的错误代码 2 错误:

================ READY ================
javac
javac
CreateProcess() failed with error code 2:
The system cannot find the file specified.

================ READY ================

编辑

我必须澄清一些困惑:

  1. 此解决方案应在单个脚本中运行。目标是能够更改代码,按下热键组合(想想 Visual Studio 中的 F5),然后构建/编译并运行。
  2. iirc 的实际问题是 notepad++ 由于某种原因无法识别 javac。

抱歉给您带来了困扰……

【问题讨论】:

    标签: java notepad++ nppexec


    【解决方案1】:

    我已经使用这个Article 轻松设置了它,或者您也可以查看另一个blog post,它非常简单且有用。

    现在来看我们如何设置 N++ 和 NppExec,以便我们的程序由 N++ 单手运行。

    先将此脚本保存为Java Compile

    NPP_SAVE
    
    cd "$(CURRENT_DIRECTORY)" 
    "C:\Program Files (x86)\Java\jdk1.7.0\bin\javac" $(FILE_NAME)
    

    这里主要是你的 java 编译器路径,在我的例子中,它在 C 目录中,很可能在你的目录中,但在 32 位和 64 位操作系统之间仍然存在差异。

    现在用另一个名称保存这个脚本,例如编译并运行

    cd "$(CURRENT_DIRECTORY)" 
    "C:\Program Files (x86)\Java\jdk1.7.0\bin\java" -classpath "$(CURRENT_DIRECTORY)" "$(NAME_PART)"
    

    现在将脚本添加到 N++ 中的宏中以从那里开始工作,

    转到 NppExec 插件中的高级选项

    答:选中顶部的“放置到宏子菜单”框

    B:从“Associated Script”组合框中选择脚本。它会自动填写“项目名称”

    C: 现在点击“添加/修改”按钮。

    D:点击确定。这将退出“高级选项”框并提示 NotePad++ 需要重新启动(在添加其他脚本之前不要重新启动它)。
    我们必须单击“确定”,因为这是清除框的最简单方法添加下一个脚本,否则可能会覆盖现有的菜单选项。

    E: 重复这些步骤以添加其他脚本,然后重新启动它。

    现在完成了。

    【讨论】:

    • 这不是一个脚本解决方案...它需要您运行两个单独的宏。
    • @SgtPooki 你能告诉我你在哪里提到你不想运行 2 个单独的宏来不离开 N++,我接受它需要两个宏来运行,但它也没有让 N++ 运行你的 java 程序。
    • 第一个块引用中的三个命令暗示我需要 1.保存,2.编译,3.在一个脚本中运行。抱歉没有说得更清楚。
    • 附带说明:如果您将 JAVA_HOME 环境变量设置为指向您的 JDK 安装文件夹(例如JAVA_HOME=C:\Program Files\Java\jdk1.8.0_91) 和下面的added to your PATH 环境变量(我更喜欢把它放在开头,以便稍后找到并确保它具有最高优先级):%JAVA_HOME%\bin; then不需要在相关的 NPPExec 文件中指定完整路径(即更新 JDK 时不需要更改,只需更新 JAVA_HOME)。
    【解决方案2】:

    我的解决方案改编自 npp_exec 帮助文件(插件>Npp_Exec>帮助/手册>第 4.7.2 节)。这对我来说没有问题,并假设您的 JDK bin 路径已添加到 Windows 系统(或用户)环境变量“Path”中。

    NPP_SAVE
    cd $(CURRENT_DIRECTORY)
    javac $(FILE_NAME)
    java $(NAME_PART)
    

    【讨论】:

    • 我不确定当我尝试这个或什么时 nppexec 中是否存在错误,但该解决方案对我不起作用。正如您在我的回答中看到的那样,javac 在“路径”中,但由于某种原因无法从记事本/nppexec 访问,所以我不得不将命令直接发送到 Windows 终端。
    • 我相信你的问题是由于当前工作目录实际上是 npp 安装目录(或类似的不确定它的默认值)而不是包含你的 java 源文件的目录。最初我遇到了类似的“找不到文件”错误,直到我意识到 javac 找错了地方!无论如何,添加 CD $(CURRENT_DIRECTORY) 为我解决了这个问题。
    【解决方案3】:

    经过 5 个多小时的谷歌搜索和反复试验,我终于有了一个可以在不离开 notepad++ 的情况下编译和运行 java 程序的 NPP Exec 脚本。

    NPP_SAVE
    cmd /K (javac "$(FULL_CURRENT_PATH)" && exit) || exit
    cmd /K (cd /D "$(CURRENT_DIRECTORY)" && java $(NAME_PART) && exit) || exit
    

    剩下的唯一事情就是找到一种方法来执行上述操作,而无需调用并向 cmd 发送参数,所有这些都在 notepad++ 和 nppexec 中。

    如以下评论中所述,如果您使用的是包,则需要相应地编辑第二行。如果您的包名与您的文件名相同,则以下内容应该有效:

    cmd /K (cd /D "$(CURRENT_DIRECTORY)" && java -cp .. $(NAME_PART).$(NAME_PART) && exit) ||退出

    【讨论】:

    • 感谢您的良好开端。我试过这个,但它对我不起作用。经过一番谷歌搜索,事实证明这是因为我使用的是一个包。这意味着我必须将第二个命令编辑为如下所示:cmd /K (cd /D "$(CURRENT_DIRECTORY)" && java -cp .. $(NAME_PART).$(NAME_PART) && exit) || exit 这对我有用。包名与文件所在的文件夹相同。
    • 哦,还有一件事。我注意到如果您更改包名称的大小写,该命令将不起作用。所以基本上,区分大小写可能是个问题。
    【解决方案4】:

    如果您正确设置 PATH,您的 origin 命令应该可以工作,您唯一需要做的就是选择 NppExec-Follow $(CURRENT_DIRECTORY) 选项,以便 npp 可以识别您的 .java 文件。

    或者您也可以将 $(FILE_NAME) 更改为 $(FULL_CURRENT_PATH) 并更改 java $(NAME_PART ) 到:

    cd $(CURRENT_DIRECTORY)

    java "$(NAME_PART)"

    【讨论】:

      【解决方案5】:

      NppExec 上的这个脚本在我的情况下有效。确保您的路径与您机器上安装的 Java 版本相匹配。

      NPP_SAVE 
      cd $(CURRENT_DIRECTORY) 
      C:\ProgramFiles\Java\jdk1.8.0_66\bin\javac $(FILE_NAME) 
      C:\ProgramFiles\Java\jdk1.8.0_66\bin\java $(NAME_PART)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-23
        • 1970-01-01
        • 1970-01-01
        • 2012-10-02
        • 1970-01-01
        • 2015-02-06
        • 1970-01-01
        相关资源
        最近更新 更多