我正在尝试将 Dropwizard 示例中的一些代码从 java 移植到 groovy。
我看到在 java 中,我可以毫无问题地使用以下代码:
package com.example.helloworld;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
@Produces(MediaType.APPLICATION_JSON)
public class HelloWorldService{
}
但是,使用 groovy 编译器( 1.8 和 2.0.6 ),该类无法编译,并且在 MediaType.APPLICATION_JSON 周围出现 noClassFoundException
如果我更改此代码以使用实际的字符串值
@Produces('application/json')
public class HelloWorldService{
}
一切正常。
groovy 解析注解的方式和 java 的方式有什么不同吗?
为了完整起见,这是 gradle 项目的一部分,这是我的 build.gradle (该文件位于 src/groovy/com/example/helloworld 下)
apply plugin: 'groovy'
// Set our project variables
project.ext {
dropwizardVersion = '0.6.1'
}
repositories {
mavenCentral()
}
dependencies {
compile group: 'com.yammer.dropwizard', name: 'dropwizard-core', version: dropwizardVersion
groovy group: 'org.codehaus.groovy', name: 'groovy-all', version: '1.8.7'
}
编译错误是:
原因:java.lang.RuntimeException: java.lang.ClassNotFoundException: com.sun.ws.rs.ext.RuntimeDelegateImpl ... 17 更多原因:java.lang.ClassNotFoundException: com.sun.ws.rs.ext。 RuntimeDelegateImpl 在 org.gradle.api.internal.tasks.compile.TransformingClassLoader.findClass(TransformingClassLoader.java:47)