我尝试在Groovy 1.6-beta-2中使用新的Groovy Grape功能,但收到错误消息;
unable to resolve class com.jidesoft.swing.JideSplitButton
运行股票示例时,从Groovy控制台(/opt/groovy/groovy-1.6-beta-2/bin/groovyConsole);
import com.jidesoft.swing.JideSplitButton
@Grab(group='com.jidesoft', module='jide-oss', version='[2.2.1,)')
public class TestClassAnnotation {
public static String testMethod () {
return JideSplitButton.class.name
}
}
我甚至尝试运行葡萄命令行工具以确保导入库。像这样;
$ /opt/groovy/groovy-1.6-beta-2/bin/grape install com.jidesoft jide-oss
确实安装了库。如何从groovyConsole中正确运行/编译代码?
答案 0 :(得分:5)
在计算启动/终止开关例程时仍然存在一些问题。对于Beta-2,首先在它自己的脚本中执行此操作:
groovy.grape.Grape.initGrape()
你将遇到的另一个问题涉及使用无界上限范围的乐趣。从2.3.0开始的Jide-oss已经将它们的代码编译为Java 6字节码,因此您需要在Java 6中运行控制台(这也是您想要为Swing做的事情)或者设置上限。范围,如此
import com.jidesoft.swing.JideSplitButton
@Grab(group='com.jidesoft', module='jide-oss', version='[2.2.1,2.3.0)')
public class TestClassAnnotation {
public static String testMethod () {
return JideSplitButton.class.name
}
}
new TestClassAnnotation().testMethod()
答案 1 :(得分:5)
我终于让它适用于Groovy Shell(1.6.5,JVM:1.6.0_13)。这应该更好地记录下来。
首先在命令行...
grape install org.codehaus.groovy.modules.http-builder http-builder 0.5.0-RC2
然后在groovysh ......
groovy:000> import groovy.grape.Grape
groovy:000> Grape.grab(group:'org.codehaus.groovy.modules.http-builder', module:'http-builder', version:'0.5.0-RC2')
groovy:000> def http= new groovyx.net.http.HTTPBuilder('http://rovio')
===> groovyx.net.http.HTTPBuilder@91520
@grab最好在文件中使用,而不是shell。
答案 2 :(得分:2)
确定。这似乎是一个简短的工作演示(从groovyConsole运行)
groovy.grape.Grape.initGrape()
@Grab(group='com.jidesoft', module='jide-oss', version='[2.2.1,2.3.0)')
public class UsedToExposeAnnotationToComplier {}
com.jidesoft.swing.JideSplitButton.class.name
运行时会生成
结果:“com.jidesoft.swing.JideSplitButton”
非常酷!!
答案 3 :(得分:0)
导入语句必须在之后出现。
诗篇。在抓取
@Grab(group='com.jidesoft', module='jide-oss', version='[2.2.1,)')
import com.jidesoft.swing.JideSplitButton
public class TestClassAnnotation {
public static String testMethod () {
return JideSplitButton.class.name
}
}
答案 4 :(得分:-1)
使用最新RC-2的不同示例(注意:Grab注释createEmptyInts):
// create and use a primitive array
import org.apache.commons.collections.primitives.ArrayIntList
@Grab(group='commons-primitives', module='commons-primitives', version='1.0')
def createEmptyInts() { new ArrayIntList() }
def ints = createEmptyInts()
ints.add(0, 42)
assert ints.size() == 1
assert ints.get(0) == 42
答案 5 :(得分:-1)
另一个例子(注意:Grab注释getHtml):
// find the PDF links in the Java 1.5.0 documentation
@Grab(group='org.ccil.cowan.tagsoup', module='tagsoup', version='0.9.7')
def getHtml() {
def parser = new XmlParser(new org.ccil.cowan.tagsoup.Parser())
parser.parse("http://java.sun.com/j2se/1.5.0/download-pdf.html")
}
html.body.'**'.a.@href.grep(~/.*\.pdf/).each{ println it }
答案 6 :(得分:-3)
另一个例子(注意:Grab
注释getFruit
):
// Google Collections example
import com.google.common.collect.HashBiMap
@Grab(group='com.google.code.google-collections', module='google-collect', version='snapshot-20080530')
def getFruit() { [grape:'purple', lemon:'yellow', orange:'orange'] as HashBiMap }
assert fruit.inverse().yellow == 'lemon'