大佬教程收集整理的这篇文章主要介绍了无法使用groovy注释中的类中定义的变量,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
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' }
编译错误是:
在具体的情况下,Groovy编译器通过反射加载javax.ws.rs.core.MediaType,最终导致com.sun.ws.rs.ext.RuntimeDelegateImpl通过Class.forName加载(由静态初始化程序触发),它不在编译类路径上.解决方案是将该类放在编译类路径上. (从长远来看,解决方案是修复独立的Groovy编译器不使用反射,并且从我所知道的已经在队列中.)如果模块的传递依赖性不是问题,那么实现这一点的最简单方法是:
dependencies { compile "com.sun.jersey:jersey-client:1.15" }
我怀疑Eclipse Groovy编译器没有这个问题,因为它不使用反射来访问编译类路径.我希望GMaven像Gradle一样爆炸,除非它被配置为使用Eclipse编译器(Gradle目前不支持).
以上是大佬教程为你收集整理的无法使用groovy注释中的类中定义的变量全部内容,希望文章能够帮你解决无法使用groovy注释中的类中定义的变量所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。