使用JDK 10时未找到javax.annotation.Resource的lookup()方法

香农

我确实有一个JavaEE7应用程序,可以在Java 8下很好地编译。现在我想迁移到Java 10,并且在单个类中的maven构建存在问题。这是代码段:

import javax.annotation.Resource;
import javax.ejb.Singleton;
import javax.inject.Inject;

import org.infinispan.Cache;

@Singleton
public class TestCacheProducer {

    @Resource(lookup="java:jboss/infinispan/testcache")
    private org.infinispan.Cache<Long, byte[]> testcache;

我正在使用以下版本将源代码编译为Java 10:

  • 专家(3.5.4)
  • maven-compiler-plugin 3.8.0
  • Java 10(Subversion 2)

在pom.xml中进行了建议的更改

<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.2</version>
</dependency>

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.8.0</version>
  <configuration>
      <source>10</source>                                                
      <target>10</target>                                                
      <release>10</release>                                              
      <executable>javac10</executable>                                   
      <encoding>UTF-8</encoding>
      <compilerArgs>
         <arg>-proc:none</arg>
         <arg>--add-modules</arg>
         <arg>java.xml.bind</arg>
         <arg>--add-modules</arg>
         <arg>java.xml.ws.annotation</arg>
      </compilerArgs>
  </configuration>
  <dependencies>                                                         
    <dependency>                                                       
        <groupId>org.ow2.asm</groupId>                                 
        <artifactId>asm</artifactId>                                   
        <version>6.2</version>
    </dependency>                                                      
  </dependencies>
</plugin>

在eclipse(光子)内部,可以解析正确的Interface类,但是当我通过mvn安装使用maven时,会出现这些编译器错误。

error: cannot find symbol
            @Resource(lookup="java:jboss/infinispan/testcache")
                      ^
      symbol:   method lookup()
      location: @interface javax.annotation.Resource

我对此错误进行了调查,但我只发现使用过编译器或JavaEE版本参考(JavaEE 6以下)的人,其中接口类没有“ lookup”方法。这里不是这种情况

我的Maven版本信息(MVN -V):

Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T20:33:14+02:00)
Maven home: C:\Softdev\maven\apache-maven-3.5.4\bin\..
Java version: 10, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk-10
Default locale: de_AT, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"

我还曾经mvn dependency:tree -Dverbose看过,如果有任何依赖,是什么引用了较旧的实现。是否有可能看到此编译错误来自哪个引用文件?

预先感谢您的任何提示或帮助。

香农

感谢你的帮助。问题是由maven-processor-plugin引起的,我还必须为JDK 10添加编译器参数。(名为'java.se.ee'的模块包括所有JEE模块,您不需要一个个地包含它们)。

<plugin>
    <groupId>org.bsc.maven</groupId>
    <artifactId>maven-processor-plugin</artifactId>
    <version>3.3.3</version>
     <executions>
        <execution>
            <id>process</id>
            <goals>
                <goal>process</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
                <fork>true</fork>
                <addCompileSourceRoots>true</addCompileSourceRoots>
                <compilerArguments>--add-modules=java.se.ee -J--add-modules=java.se.ee</compilerArguments>
                <outputDirectory>${project.build.directory}/metamodel</outputDirectory>
                <processors><processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
                </processors>
            </configuration>
        </execution>
    </executions>
    <dependencies>  
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-jpamodelgen</artifactId>
            <version>${hibernate.version}</version>
        </dependency>
    </dependencies>
</plugin>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ClassNotFoundException:javax.annotation.Generate with JDK 11

导入javax.annotation.Resource无法解析

在Intellij IDEA中实现方法时使用org.jetbrains.annotations.NotNull而不是javax.annotation.Nonnull

javax.annotation中类和Java JDK 11

错误:(52,0)未找到Gradle DSL方法:使用Quickblox API时出现“сompile()”

在laravel中使用Eloquent的find方法时,如何应对未找到的记录?

当我使用 ITelephony 时,我得到了这个 getITelephony 方法未找到错误

使用JDK 8编译通用方法时强制转换

使用jboss时不存在javax.servlet.annotation包

jsf给定方法未找到异常javax.el.MethodNotFoundException

bash !@#: 使用紧缩时未找到事件

使用“始终”时未找到实例

FindBug 未从 javax.annotation.Nullable 方法检测到 null

未找到页面,请求方法:当 urls.py 中的所有页面都正确时使用 Django

opencv_annotation(-204:未找到請求的對象)

使用JDK 10运行icCube

Spring AOP建议使用方法而不是@annotation:为什么?

如何获得访问javax.annotation.Resource在运行时的Java 9

访问字段时出错:在 Hibernate 中使用 @OneToMany Annotation

使用 kubectl port-forward 时未找到 Pod

编译c时使用cygwin“ -bash:gcc:命令未找到”?

使用 DB2 库时未找到 Java 类

使用XSD时xmllint验证错误“未找到DTD”

使用JsonSchema验证Json时未找到类异常

当使用cat未找到参数时,bash打印帮助消息

使用ANDROIDX_TEST_ORCHESTRATOR时未找到测试

PHPUnit:使用@dataProvider时,“未找到'Eloquent'类”

错误“未找到服务。” 在使用Spring和Jetty时

Mongo DB:使用$ near查询时未找到结果