Как использовать java ee 6 @Resource annotation - PullRequest
4 голосов
/ 22 марта 2010

API java ee 6 имеет аннотацию @ Resource с атрибутом lookup, однако, java se 6 api ( здесь ).Однако, поскольку java ee 6 зависит от java se 6, кажется, что вы не можете получить ee версию аннотации и атрибут «lookup».

Это ошибка или есть какой-то другой способ использовать эту аннотацию, которую я пропускаю.

TIA

Ответы [ 3 ]

7 голосов
/ 23 марта 2010

Ваш JDK (и мой) не имеет последней версии javax.annotation.Resource из JSR-250 .Чтобы использовать последнюю версию во время компиляции, вам придется переопределить одобренный каталог компилятора (например, чтобы указать на ваш одобренный каталог glassfishv3):

-Djava.endorsed.dirs=${GLASSFISH_HOME}/modules/endorsed
2 голосов
/ 12 августа 2011

Thread necro в своих лучших проявлениях, но на мой вкус - пытаясь делать вещи чистыми и аккуратными - подход 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>

Кстати, я нашел это здесь . Большое спасибо, Фредерик!

2 голосов
/ 22 марта 2010

Это один и тот же класс в обоих случаях (javax.annotation.Resource).Он есть в обоих наборах документов API только для удобства.Реальные реализации JavaEE 6 будут просто использовать класс из JavaSE 6.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...