【问题标题】:Getting Groovy's Grape Going!让 Groovy 的葡萄开始了!
【发布时间】:2008-10-10 17:49:56
【问题描述】:

我尝试在 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 正确运行/编译?

【问题讨论】:

    标签: grails groovy grape


    【解决方案1】:

    在制定启动/终止开关例程时仍然存在一些问题。对于 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()
    

    【讨论】:

      【解决方案2】:

      我终于让它适用于 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 中使用更好。

      【讨论】:

        【解决方案3】:

        好的。似乎这是一个简短的工作演示(从 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”

        很酷!!

        【讨论】:

        • 这对我很有用。空类是关键。几点... 1/ 我不需要 initGrape() 行(使用 groovy 1.7x 或 1.8x).. 2/ 如果您使用代理,请确保添加您的代理设置 -Dhttp.proxyHost= -Dhttp.proxyPort=... 我将它们添加到我的 startGroovy.sh|bat
        【解决方案4】:

        导入语句必须出现在 抓取之后。
        附言。抓取后必须至少存在 一个 import 语句

        @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
            }
        }
        

        【讨论】:

          【解决方案5】:

          使用最新 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
          

          【讨论】:

          • groovy.codehaus.org/Grape 窃取的示例。 (完全复制)此外,它没有回答问题。
          • 我同意。如果您在网络上的其他地方找到正确的答案,请向人们推荐正确的答案。提供链接。请不要在没有署名的情况下将他人的工作归功于他人。
          【解决方案6】:

          另一个例子(注意: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 }
          

          【讨论】:

          【解决方案7】:

          另一个例子(注: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'
          

          【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-12-06
          • 2015-06-13
          • 1970-01-01
          • 1970-01-01
          • 2020-11-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多