我有一个在以下环境中运行的企业应用程序。
我已在所有三个模块(Java EE模块,EJB模块和WAR模块)中project.properties
下的nbproject
文件中将源级别从1.6更改为1.7,以支持Java EE 7。它是不 Maven项目。
j2ee.platform=1.7
javac.source=1.7
javac.target=1.7
之前他们都是1.6。
完成这些更改后,清洁项目时会出现以下警告。
警告:支持的源版本' RELEASE_6'来自注释 处理器 ' org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor' 少于-source' 1.7'
我使用 EclipseLink元模型生成器1.3.0 final 生成静态元模型。
除了将源级别降级到1.6之外,有没有办法摆脱此警告?是否与此警告不兼容?
更新:
此警告在EclipseLink 2.6.1(自2015年10月15日星期四起可用)中不再可再现,并且捆绑包提供了相应的元模型生成器 - org.eclipse.persistence.jpa.modelgen_2.6.1.v20150916-55dc7c3.jar
。
目前在GlassFish 4.1 / Java EE 7上使用EclipseLink 2.6.1(JPA 2.1)和JDK 8u45进行了测试。
我认为它已修复。
答案 0 :(得分:14)
根据the Java API specification,@ SupportMourceVersion注释(它是日志的起源)指定“注释处理器支持的最新源版本”,而不是最小值。
在这个主题上阅读discussion on the NetBeans forum,它表明你的解决方案很少。我想唯一的解决方案是更改CanonicalModelProcessor中的代码:
为了使EclipseLink运行时符合Java 6,您可以使用 @SupportedSourceVersion(RELEASE_6)
要适当地适应Java 7编译,你应该有 @SupportedSourceVersion(RELEASE_7)
但据我了解,您并不是自己编译EclipseLink。主要问题(以及警告的原因)是软件提供程序(即Eclipse基础)保证在Java SE 6环境中正确处理代码。
问题是reported as a JDK错误。结论是没有其他明确的解决方法。
解决方案是指定RELEASE7常量(至少根据API的说法)。但是如果EclipseLink团队这样做,他们就无法在Java 6环境中进行编译。
所以,无论你是否使用适当的常量自己编译EclipseLink,无论你是否接受警告......