如何使用';java';从命令行
我必须将一些groovy代码发送给一些只安装了java的用户(没有groovy,没有$groovy_home,等等)。我正试图从命令行调用groovy,但运气不好。这是我的bat文件:如何使用';java';从命令行,java,command-line,groovy,Java,Command Line,Groovy,我必须将一些groovy代码发送给一些只安装了java的用户(没有groovy,没有$groovy_home,等等)。我正试图从命令行调用groovy,但运气不好。这是我的bat文件: java -classpath .;lib;bin;bin-groovy introspector.AclCollector 这是我的例外: Exception in thread "main" java.lang.NoClassDefFoundError: groovy/lang/GroovyObject
java -classpath .;lib;bin;bin-groovy introspector.AclCollector
这是我的例外:
Exception in thread "main" java.lang.NoClassDefFoundError: groovy/lang/GroovyObject
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Caused by: java.lang.ClassNotFoundException: groovy.lang.GroovyObject
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 12 more
Could not find the main class: introspector.AclCollector. Program will exit.
有人有线索吗?我在\lib dir中有'groovy-all-1.6-beta-1.jar'。我认为您需要在类路径中显式列出groovy jar您有另一个groovy应用程序示例,名为from Java(在本例中,来自ant,但总体思路是相同的) 正如frankowyer所提到的,java的类路径参数中明确列出了groovy jar 由于您的客户机没有特殊的环境变量,只需将
%GROOVY\u HOME%/…
替换为以下内容的完整路径:
groovy.jar or
goovy-all-VERSION.jar (to minimize any conflict with other libraries)........
- groovy.jar或
- (尽量减少与其他库的冲突)
$ groovy GroovyWrapper -c -m HelloWorld
GroovyWrapper将把脚本HelloWorld.groovy编译成HelloWorld.class,并创建一个自执行jar HelloWorld.jar
现在,您可以使用HelloWorld.jar启动HelloWorld脚本,只需运行:
$ java -jar HelloWorld.jar
VonC的伟大回答:
。。。。。。。由于您的客户没有特殊的环境变量,
只需更换%GROOVY\u HOME%/
。。。完整路径为:
groovy.jar or
goovy-all-VERSION.jar (to minimize any conflict with other libraries)........
这是针对windows Vista的:
在系统属性|环境变量|用户变量中:
变量名GROOVY\u HOME
设置为C:\GROOVY\GROOVY-1.8.5
变量名CLASSPATH
值被设置为包含;%GROOVY\u HOME%\embeddeble\GROOVY-all-1.8.5.jar
不要犯我所犯的错误(让我的轮子转了一点),没有准备用“;”(点和分号):因为路径需要基本文件夹,所以你需要找到主类(看起来很奇怪)小心[~!”
java -cp .:~/path-to-groovy-all.jar YourClassName # does not work
java -cp ~/path-to-groovy-all.jar:. YourClassName # works
java -cp .:/full/path/to/goovy-all.jar YourClassName # works
在第一行中,tilde不是由bash处理的,java无法理解它
在第二行中,tilde被bash取代,一切正常。这应该是一个注释,而不是单独的答案
GroovyRapper
使用Ant
将groovy脚本构建到jar文件中。此构建也可以通过Gradle
方式完成。看看是否有人喜欢它。