Tag: groovy

请帮我弄清楚这个Web代理代码有什么问题

我想为练习编写一个Web代理,这是我到目前为止的代码: // returns a map that contains the port and the host def parseHostAndPort(String data) { def objMap // this has host and port as keys data.eachLine { line -> if(line =~ /^(?i)get|put|post|head|trace|delete/) { println line def components = line.split(” “) def resource = components[1] def colon = resource.indexOf(“:”) if(colon != -1) { URL u […]

动态创建Groovy类

给定一个类名,我想动态创建一个Groovy类,为它添加属性和方法。 我使用创建新类 instance = this.class.classLoader.parseClass( “public class $name {}”) 对于我使用的方法 instance.metaClass.”$it.key” = it.value 其中it.key是一个字符串(方法名称),it.value是一个闭包。 这很方便,因为我可以指定方法参数类型并获取类型检查。 但是,如果没有为其赋值,我无法指定动态创建的属性类型。 我可以通过明确定义属性的getter和setter来解决这个问题。 这样可行,但似乎metaClass.name = value和metaClass.getName = {}实际上都没有在类中创建一个字段,因为Java字段运算符不适用于创建的属性。 我可以将属性添加到Groovy类并指定其类型,而无需为其分配初始值或显式定义getter和setter方法吗? 有没有办法向Groovy类添加新字段? 这是脚本: class SomeClass { Integer p1 String p2 } class ClassBuilder { def name def instance def properties def methods def ClassBuilder() { properties = [:] methods = [:] } def […]

为什么我的Geb测试返回“无法从回调中创建驱动程序”,即使在Grails中更新我的Selenium依赖项后?

我正在引用此前一个线程( geb.driver.DriverCreationException:无法从回调创建驱动程序 ) – 但我仍然遇到问题。 我正在尝试在Grails 2.4.3下运行Gebfunction测试,并且我将Selenium支持依赖项设置为版本2.42.2。 我也尝试过2.43.1和2.45.0。 如果我尝试使用Selenium 2.42.2或2.43.1,Geb将停止运行并且不会完成,如果我使用2.45.0,它将彻底崩溃。 这些是我得到的错误: 如果我尝试Selenium支持2.42.2或2.43.1,我收到此错误:geb.driver.DriverCreationException:无法从回调创建驱动程序 如果我尝试Selenium支持2.45.0 – 我的浏览器将尝试运行Geb测试,但会返回“页面不是直接正确”错误。 在我的Grails BuildConfig.groovy中,这是我现在设置的selenium依赖项: def seleniumVersion = “2.45.0” dependencies { // specify dependencies here under either ‘build’, ‘compile’, ‘runtime’, ‘test’ or ‘provided’ scopes eg // runtime ‘mysql:mysql-connector-java:5.1.29’ // runtime ‘org.postgresql:postgresql:9.3-1101-jdbc41’ compile ‘org.dbunit:dbunit:2.5.0’ test “org.seleniumhq.selenium:selenium-firefox-driver:$seleniumVersion” test “org.gebish:geb-spock:$gebVersion” compile “org.springframework:spring-orm:4.0.5.RELEASE” // need for select […]

在Gradle构建脚本中使用Java类

我有一个Gradle构建脚本,它必须在Task中实例化一个Java类并在创建的对象上调用一个方法。 目前,我有以下内容: apply plugin: ‘java’ dependencies { compile files(“libs/some.library.jar”) } task A << { def obj = new some.library.TestClass() obj.doSomething() } 问题是找不到类some.library.TestClass() 。 我读了这篇关于如何在Gradle中使用Groovy类的文章 ,但是我需要我的Java类来自外部JAR文件。 如何在构建源中添加jar? 似乎dependencies块阻止不会做我期望它做的事情。 谁能给我一个正确方向的提示?

groovy中java类的metaClass属性

我正在学习groovy,我对其元编程设施有疑问。 根据我的理解,groovy中的每个对象都实现了groovy.lang.GroovyObject接口(由groovy编译器隐式添加)。 后一个接口包含方法getMetaClass(),所以我可以执行以下操作: class MyGroovyClass{ } def myGroovyClass = new MyGroovyClass(); println myGroovyClass.metaClass.name 我不明白的是java编译器编译的对象如java.lang.String如何获取metaClass属性。 这个属性是在实际的MetaClass对象中定义的,它通过MetaClassRegistry与java类相关联吗?

Thread-6,RECV TLSv1 ALERT:致命,handshake_failure

这段代码出了什么问题,它应该信任所有主机,但它不会… 它适用于例如google.com,但没有在我的机器上本地运行的API网关服务,为什么? SSL调试输出 触发种植SecureRandom播种SecureRandom忽略不支持的密码套件:TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 …忽略不支持的密码套件:TLS_RSA_WITH_AES_128_CBC_SHA256允许不安全的重新协商:false允许传统的hello消息:true是初始握手:true是否是安全重新协商:false Thread-6,setSoTimeout(0 )调用%%没有缓存的客户端会话*** ClientHello,TLSv1 RandomCookie:GMT:1434280256 bytes = {216 … 40}会话ID:{}密码套件:[TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,…… SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA,SSL_RSA_WITH_RC4_128_MD5,TLS_EMPTY_RENEGOTIATION_INFO_SCSV]压缩方法:{0}扩展椭圆曲线,曲线名称:{secp256r1 .. secp256k1}扩展ec_point_formats,格式:[未压缩] Thread-6,WRITE:TLSv1 Handshake,length = 163 Thread-6,READ:TLSv1 Alert,length = 2 Thread-6,RECV TLSv1 ALERT:fatal,handshake_failure Thread-6,名为closeSocket()Thread-6,处理exception: javax.net.ssl.SSLHandshakeException:** 收到致命警报:handshake_failure ** import java.io.InputStreamReader; import java.io.Reader; import java.net.URL; import java.net.URLConnection; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import java.security.cert.X509Certificate; public […]

将Groovy Grails-service注入Java类

我有一个在Groovy中实现的Grails服务,我想在Web应用程序中注入Java类。 我知道我可以通过applicationContext.getBean(“exampleService”)在Java中获取bean,但是在编译时类型ExampleService是未知的。 我可以简单地导入服务吗? 它似乎没有声明一个典型的包。 (我对Grails和Java Web都很陌生,因此非常感谢能够帮助我了解幕后发生的事情。)

如何在没有指定年份的情况下简单地解析日期?

我有一个工具似乎给了我日期而没有指定我需要转换的年份,我正在使用Java来完成任务(实际上是Groovy但在这种情况下足够接近)。 一个示例日期是“13 Dec 12:00:00”,应该参考12/13/2011,因为未指定年份,它是2011.以下Groovy脚本可以解决这个问题: import java.text.* println new SimpleDateFormat(“dd MMM HH:mm:ss”).parse(“13 Dec 12:00:00”) 我对这个脚本的问题是SimpleDateFormat似乎在转换后的1970年没有设置。 我可以明确地将它设置为2011年,因为那是当前年份,但是当前年份与设定的日期之间似乎存在一些延迟,因此当新年到来时,这个脚本会在延迟时间内出错。 我该如何解决这个问题呢? 一种解决方案是检查当前年份的日期是否已经过去,然后使用去年,但我希望有一个更简单的解决方案(或者说最简单的解决方案)。

Groovy Generics失败

除了groovy比java更有动态… 为什么这是groovy中的编译时错误(意外的令牌< ): interface A { T getByClass(Class clazz) } 我怎么用groovy的方式写这个?

Groovy 2.0与静态编译的性能如何?

我看到最近发布的Groovy 2.0包括可选的静态编译以及其他一些额外的好处,比如可选的静态类型检查。 在做了一些搜索之后,我找不到任何广泛的基准测试,将Groovy的性能(使用静态编译)与Java和Scala进行比较。 有谁知道任何这样的性能比较? 我们可以假设它与Groovy ++在它死之前是一样的吗? 如果它的性能可比,那么Groovy是否可以替代大型,性能关键的应用程序?