12

我尝试在 Groovy 1.6-beta-2 中使用新的Groovy Grape功能,但收到一条错误消息;

unable to resolve class com.jidesoft.swing.JideSplitButton

运行 stock 示例时,从 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 正确运行/编译?

4

7 回答 7

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()
于 2008-10-11T18:24:28.847 回答
5

我终于让它适用于 Groovy Shell(1.6.5,JVM:1.6.0_13)。这应该更好地记录下来。

首先在命令行...

葡萄安装 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 中使用更好。

于 2009-10-27T06:06:39.547 回答
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”

很酷!!

于 2008-10-11T18:50:34.927 回答
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
    }
}
于 2013-12-09T14:38:17.160 回答
-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
于 2009-01-23T14:58:47.617 回答
-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 }
于 2009-01-31T14:33:11.880 回答
-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'
于 2009-01-31T14:59:46.740 回答