Tôi đang cố gắng chuyển một số mã từ các ví dụ Dropwizard từ java sang groovy.Không thể sử dụng các biến được xác định trong các lớp trong chú thích groovy
Tôi thấy rằng trong java, tôi có thể sử dụng đoạn mã sau mà không cần bất kỳ vấn đề:
package com.example.helloworld;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
@Produces(MediaType.APPLICATION_JSON)
public class HelloWorldService{
}
Tuy nhiên, với trình biên dịch groovy (cả 1.8 và 2.0.6), lớp không biên dịch với một noClassFoundException xung quanh MediaType.APPLICATION_JSON
Nếu tôi thay đổi mã này để sử dụng các chuỗi giá trị thực tế
@Produces('application/json')
public class HelloWorldService{
}
mọi thứ hoạt động hoàn hảo.
Có bất kỳ sự khác biệt nào giữa cách thức giải quyết các chú thích và cách thức java thực hiện?
Để hoàn chỉnh, đây là một phần của một dự án gradle và đây là build.gradle của tôi (tập tin đi dưới 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'
}
Các lỗi biên dịch là:
Nguyên nhân: java.lang.RuntimeException: java.lang.ClassNotFoundException: com.sun.ws.rs.ext.RuntimeDelegateImpl ... 17 hơn gây ra bởi: java.lang.ClassNotFoundException: com. sun.ws.rs.ext.RuntimeDe legateImpl tại org.gradle.api.internal.tasks.compile.TransformingClassLoader.findClass (TransformingClassLoader.java:47)
Tính năng này có hoạt động với '@Sản phẩm (javax.ws.rs.core.MediaType.APPLICATION_JSON)' –
Không, nó không --- nhưng lỗi khiến tôi nghĩ rằng đó có thể là một điều tốt nghiệp hơn là một câu cá điều –
dường như là lỗi từ khi tôi có thể biên dịch mẫu bằng cách sử dụng công cụ tìm kiếm và làm mờ. –