notepad++本身不运行groovy,需依赖外部jvm环境;运行失败主因是groovy命令未正确配置于path、路径含空格或中文未加引号、缺少-dfile.encoding=utf-8参数导致乱码,或classpath未显式指定第三方jar。

Notepad++ 本身不支持直接运行 Groovy,必须靠外部 JVM 环境 + 命令行调用 groovy 命令实现。光配语法高亮没用,运行失败几乎全是环境或路径问题。
确认 groovy 命令能在 CMD 中直接调用
这是最常卡住的一步。NppExec 或“运行”菜单只是把命令扔给系统,它不负责装 Groovy、不检查 PATH、也不报错提示“没装”。
- 打开 CMD(不是 PowerShell),执行
groovy -version,必须输出类似3.0.9的版本号 - 如果报
'groovy' is not recognized,说明没装 Groovy 或没加进PATH - Groovy 官方推荐用 SDKMAN! 安装(
sdk install groovy),比手动解压+配 PATH 更稳;若手动安装,确保GROOVY_HOME/bin已加入系统PATH - 避免中文路径或空格路径(如
C:\Program Files\Groovy),否则命令中需全程加双引号,容易漏写
用 NppExec 配一个可靠的 run_groovy 脚本
比“运行”菜单更可控:能捕获编译错误、自动保存、指定编码、控制工作目录。关键不是命令多,而是参数要对。
ArcGIS for Android SDK 目前最新版本为10.2.5 从此版本开始ESRI不在提供Eclipse的插件支持,官方的帮助也针对于Android Studio的支持;本文档主要讲述的内容是最新版本ArcGIS For Android Eclipse环境配置;感兴趣的朋友可以过来看看
- 打开
插件 → NppExec → Execute...,粘贴以下内容:
NPP_SAVE cd "$(CURRENT_DIRECTORY)" groovy -Dfile.encoding=UTF-8 "$(FILE_NAME)"
-
NPP_SAVE确保先存盘再执行,避免改了没保存就跑旧代码 -
cd "$(CURRENT_DIRECTORY)"把工作目录切到脚本所在位置,否则new File("config.json")会找错地方 -
-Dfile.encoding=UTF-8强制 JVM 用 UTF-8 解析源码和读取文件,中文字符串/注释才不会乱码 - 不用
groovyc编译再java运行——Groovy 脚本模式(.groovy)直接groovy xxx.groovy即可,省事且支持热重载
“运行”菜单快捷方式也能用,但要注意陷阱
适合临时测试,但容错差,出错时只闪一下黑窗,根本看不到报错信息。
- 菜单栏 →
运行 → 运行...(或按F5),输入:
cmd /k "cd /d $(CURRENT_DIRECTORY) & groovy -Dfile.encoding=UTF-8 $(FILE_NAME) & pause"
-
cd /d支持跨盘符切换(比如从C:切到D:),比单纯cd更鲁棒 - 结尾加
& pause是为了窗口不闪退,方便看错误堆栈——尤其MissingMethodException或NoClassDefFoundError这类运行时报错 - 别省略双引号:当
$(CURRENT_DIRECTORY)含空格(如C:\My Project)时,不加引号会截断路径 - 这个方式无法捕获
groovy命令本身是否执行成功,出错只能靠肉眼盯黑窗
Groovy 脚本里引用 Java 类或第三方库怎么办
默认 groovy 命令只认当前目录和 GROOVY_HOME/lib,想用 commons-lang3 或自己写的 utils.jar 得显式加 classpath。
- 在 NppExec 脚本里改用:
groovy -cp "lib/commons-lang3-3.12.0.jar:lib/utils.jar" -Dfile.encoding=UTF-8 "$(FILE_NAME)"
- Windows 用分号
;分隔 jar 路径,Linux/macOS 用冒号:——别混用 -
lib/是相对$(CURRENT_DIRECTORY)的路径,确保 jar 真的存在,否则报java.lang.NoClassDefFoundError - 如果 jar 依赖其他 jar(比如
slf4j-api.jar),得全部列出来,Groovy 不会自动解析MANIFEST.MF中的Class-Path
真正麻烦的是闭包嵌套层级深、GString 插值复杂、或用了 AST 变换的脚本——这些语法层面的东西,Notepad++ 既不校验也不提示,全靠你手写正确。运行时报错才暴露,而不是编辑时标红。










