从war包中运行Groovy Jar文件的Groovy CLI

3

我知道Groovysh,但我想知道是否可以直接从部署的war servlet中放置的groovy.jar文件运行groovy CLI(使用一个命令)。我可以简化问题。是否有可能像Clojure中那样运行Groovy CLI?

java -cp clojure-1.4.0.jar clojure.main

在终端中出现了CLI。这是Clojure的外观。我正在寻找一行命令,可以在终端中运行Groovy CLI(仅使用Groovy库来运行它)。我在javadoc中寻求帮助,找到了应该有所帮助的类,但不知道如何运行它。

http://groovy.codehaus.org/api/groovy/lang/GroovyShell.html

(如果有人知道不符合所有标准的解决方案,也请回答。)

//编辑

看起来需要 groovy.jar、commons-cli.jar、antlr.jar、asm-util.jar 和 jline.jar。所以我把这些文件添加到了我的 war 文件中的 WEB-INF/lib 目录中。也许制作一个自己的 jar 文件来调用其他 jar 文件中的 Groovy CLI 是一个好的解决方案,但现在的问题是,如何通过命令行运行放置在已部署的 war 应用程序的 WEB-INF/lib 目录中的 jar 文件?

问候


先生,您对下面的答案的评论似乎是正确的。请将其发布为“问题的答案”并接受它。这样,在未来人们就可以看到这个答案了。 - bhathiya-perera
1个回答

4

看起来groovysh依赖的库比可嵌入版本包含的更多。我通过使用以下命令成功实现了您想要的功能:

$ java -classpath '*' org.codehaus.groovy.tools.shell.Main

但是当前目录必须是所有Groovy库所在的目录,即 $GROOVY_HOME/lib

$ cd $GROOVY_HOME/lib
$ java -classpath '*' org.codehaus.groovy.tools.shell.Main
Groovy Shell (2.0.6, JVM: 1.6.0_24)
Type 'help' or '\h' for help.
------------------------------------------------------------------------------
groovy:000> 

1
看起来需要 groovy.jar、commons-cli.jar、antlr.jar、asm-util.jar 和 jline.jar。所以我把这些文件添加到了我的 war 文件的 WEB-INF/lib 目录中。也许制作一个调用其他 jar 中的 Groovy CLI 的自己的 jar 是一个好的解决方案,但现在问题是,如何通过命令行运行放置在已部署的 war 应用程序的 WEB-INF/lib 目录中的 jar? - user1810515
你能否从 Web 应用程序中运行像 pwd 这样的命令?我猜它将会在根目录中,因此你需要将 -classpath 指向 /context-name/WEB-INF/lib 或类似的路径。 - Will

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