java ee 6 api有一个注释@Resource,其属性为'lookup',但java se 6 api(here)也是如此。但是,由于java ee 6依赖于java se 6,看起来你无法获得注释的ee版本和'lookup'属性。
这是一个错误还是有其他方法可以使用我缺少的这个注释。
TIA
答案 0 :(得分:7)
您的JDK(和我的)没有来自JSR-250的javax.annotation.Resource
的最新版本。要在编译期间使用最新版本,您必须覆盖编译器的背书目录(例如,指向您的glassfishv3背书目录):
-Djava.endorsed.dirs=${GLASSFISH_HOME}/modules/endorsed
答案 1 :(得分:2)
在这两种情况下都是同一个类(javax.annotation.Resource
)。它只是为了方便而在两组API文档中。实际的JavaEE 6实现将只使用JavaSE 6中的类。
答案 2 :(得分:2)
最好的线程坏死,但根据我的口味 - 尝试做干净整洁的事情 - javamonkey79的方法太过分了。
这是我在我的pom.xml中放入的工具:
<profiles>
<profile>
<id>endorsed</id>
<activation>
<property>
<name>sun.boot.class.path</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<!-- javaee6 contains upgrades of APIs contained within the JDK itself.
As such these need to be placed on the bootclasspath, rather than classpath of the
compiler.
If you don't make use of these new updated API, you can delete the profile.
On non-SUN jdk, you will need to create a similar profile for your jdk, with the similar property as sun.boot.class.path in Sun's JDK.-->
<compilerArguments>
<bootclasspath>${settings.localRepository}/javax/javaee-endorsed-api/6.0/javaee-endorsed-api-6.0.jar${path.separator}${sun.boot.class.path}</bootclasspath>
</compilerArguments>
</configuration>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-endorsed-api</artifactId>
<version>6.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</profile>
</profiles>
顺便说一句,我找到了here。非常感谢,弗雷德里克!