我想從Dropwizard示例中的java代碼移植一些代碼到groovy。不能使用Groovy註解中的類中定義的變量
我看到的Java中,我可以使用下面的代碼沒有任何問題:
package com.example.helloworld;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
@Produces(MediaType.APPLICATION_JSON)
public class HelloWorldService{
}
然而,與常規的編譯器(包括1.8和2.0.6),類失敗並noClassFoundException編譯各地MediaType.APPLICATION_JSON
如果我改變了代碼,使用實際的字符串值
@Produces('application/json')
public class HelloWorldService{
}
一切完美。
groovy解決註釋的方式和java的方式有什麼區別嗎?
爲了完整,這是一個gradle這個項目的一部分,這裏是我的build.gradle(文件依次在src /常規/ COM /例子/的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: 拋出java.lang.ClassNotFoundException: COM com.sun.ws.rs.ext.RuntimeDelegateImpl ... 17由多個所致。 sun.ws.rs.ext.RuntimeDe legateImpl在 org.gradle.api.internal.tasks.compile.TransformingClassLoader.findClass(TransformingClassLoader.java:47)
是否與'@Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON)工作' –
沒有,它沒有---但錯誤讓我覺得這可能是一個gradle這個事情,而不是一個常規東西 –
似乎是一個gradle bug,因爲我能夠使用groovy-eclipse和maven編譯相同的東西。 –