JavaからGroovyへのDropwizardのコードからいくつかのコードを移植しようとしています。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の両方)で、クラスは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 org.gradle.api.internal.tasks.compile.TransformingClassLoader.findClass(TransformingClassLoader.java:47)
'@Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON) 'で動作しますか? –
いいえ、それはありません---しかし、エラーは私がそれがgroovyではなく、私がgroovy-eclipseとmavenを使って何かをコンパイルできるので、 –
はgradleのバグのようです。 –