使用Notepad++和NppExec编译和运行Java程序

3
请记住,在Windows shell中编译是有效的,因此这个问题几乎不可能是路径问题。
我花了很多时间研究如何做到这一点,所有我在网上找到的结果都说你可以这样做:
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. 实际问题,如果我没记错的话,是因为Notepad++出于某种原因无法识别javac。

对于造成的混淆我感到抱歉...

5个回答

4

我已经使用 这篇文章 或者你也可以看看另一篇 博客文章 来非常简单地设置它。

现在来讲一下如何设置 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插件中的高级选项
A: 选中顶部的“放置到宏子菜单”复选框
B: 从“相关脚本”组合框中选择脚本。它会自动填充“项目名称”
C: 现在点击“添加/修改”按钮
D: 点击“确定”按钮。这将退出高级选项框并说Notepad++需要重新启动(在添加其他脚本之前不要重新启动它)。
我们必须点击确定,因为这是清除框以添加下一个脚本的最简单方法,否则它可能会覆盖现有的菜单选项。
E: 重复这些步骤以添加其他脚本,然后重新启动它。
现在完成了。

这不是一个脚本解决方案...它需要你运行两个单独的宏。 - SgtPooki
@SgtPooki,你能告诉我你在哪里提到过不想运行两个单独的宏以避免离开N++吗?我知道需要运行两个宏,但这也不会让N++停止运行你的Java程序。 - avirk
第一个代码块中的三个命令意味着我需要在一个脚本中完成1.保存、2.编译、3.运行。抱歉没有表达得更清晰。 - SgtPooki
作为一个附注:如果您已经将JAVA_HOME _环境变量_设置为指向JDK安装文件夹(例如,JAVA_HOME=C:\Program Files\Java\jdk1.8.0_91),并且在以下添加到您的PATH环境变量中(我喜欢把它放在开头,以便稍后轻松找到,并确保它具有最高优先级):%JAVA_HOME%\bin;那么您就不需要在相关的NPPExec文件中指定完整路径(即,在更新JDK时无需更改它,只需更新JAVA_HOME)。 - informatik01

4

我的解决方案是根据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终端。 - SgtPooki
我相信你的问题是由于当前工作目录实际上是npp安装目录(或类似的,不确定默认值是什么)而不是包含你的Java源文件的目录所导致的。最初我也遇到了类似的“文件未找到”错误,直到我意识到javac在错误的位置查找!无论如何,添加CD $(CURRENT_DIRECTORY)为我解决了这个问题。 - dan

1

经过五个多小时的Google搜索和试错,我最终拥有了一个可用的NPP Exec脚本,可以在不离开记事本++的情况下编译和运行Java程序。

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

现在唯一剩下的就是找到一种方法,在notepad++和nppexec中完成上述操作,而不必调用和发送参数到cmd。

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

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


1
谢谢你给了我这么好的开端。我尝试过了,但是它对我没有起作用。经过一些搜索,发现是因为我正在使用一个包。这意味着我必须编辑第二个命令,使其看起来像这样:cmd /K (cd /D "$(CURRENT_DIRECTORY)" && java -cp .. $(NAME_PART).$(NAME_PART) && exit) || exit 这对我起作用了。包名与文件所在的文件夹相同。 - KdgDev
哦,还有一件事。我注意到如果更改包名称的情况,该命令将无法工作。因此,大小写敏感可能会成为一个问题。 - KdgDev

0

如果你正确设置了PATH,那么你的原始命令应该可以工作。你需要做的唯一一件事就是选择NppExec-Follow $(CURRENT_DIRECTORY)选项,这样npp就可以识别你的.java文件。

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

cd $(CURRENT_DIRECTORY)

java "$(NAME_PART)"


0

这个 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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接