AbstractMethodError: javax.ws.rs.core.UriBuilder.uri in REST, EJB Application
AbstractMethodError: javax.ws.rs.core.UriBuilder.uri in REST, EJB Application
我的 pom.xml
文件有问题。我知道,有很多关于这个问题的话题,但其中任何一个都能回答我的问题。
@Path("/actors")
public class MainController {
@EJB
private ActorDaoLocal actorDao;
}
@Local
public interface ActorDaoLocal {
//some stuff here
}
@Stateless
public class ActorDao implements ActorDaoLocal {
@PersistenceContext
private EntityManager em ;
//some stuff here
}
@ManagedBean(name = "ActorBean")
@ApplicationScoped
public class ActorBean {
@EJB
private ActorDaoLocal usersDao;
}
在我的应用程序中,当我在 ActorBean
中没有注释时,如下所示:
@ManagedBean(name = "ActorBean")
@ApplicationScoped
actorDao 在 MainController
中为 null
但是,当我为它添加此注释和依赖项时,我得到了异常:
java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder;
at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:651)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
我的pom.xml
:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-xc</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.18</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.18</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.18</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.18</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.18</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>javax.ejb</groupId>
<artifactId>ejb-api</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.5.2</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<type>jar</type>
</dependency>
请帮我更正这个问题,我在我的 pom 文件中找不到错误。
我在 Tomcat 8
工作
您的类路径中有多个依赖项,其中包含 javax.ws.rs.core.UriBuilder
、两个 JAX-RS 1.1:
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.18</version>
</dependency>
以及 JAX-RS 2.0 之一:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
由于 JAX-RS 2.0 来自 Java EE 7,您可能需要将 javaee-api
降级到版本 6,使用方式如下:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
</dependency>
其他方式是升级 Jersey 版本,就像这个答案:
运行时调用UriBuilder#uri(String),所以需要在servlet容器中验证依赖关系
我的 pom.xml
文件有问题。我知道,有很多关于这个问题的话题,但其中任何一个都能回答我的问题。
@Path("/actors")
public class MainController {
@EJB
private ActorDaoLocal actorDao;
}
@Local
public interface ActorDaoLocal {
//some stuff here
}
@Stateless
public class ActorDao implements ActorDaoLocal {
@PersistenceContext
private EntityManager em ;
//some stuff here
}
@ManagedBean(name = "ActorBean")
@ApplicationScoped
public class ActorBean {
@EJB
private ActorDaoLocal usersDao;
}
在我的应用程序中,当我在 ActorBean
中没有注释时,如下所示:
@ManagedBean(name = "ActorBean")
@ApplicationScoped
actorDao 在 MainController
但是,当我为它添加此注释和依赖项时,我得到了异常:
java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder;
at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:651)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
我的pom.xml
:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-xc</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.18</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.18</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.18</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.18</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.18</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>javax.ejb</groupId>
<artifactId>ejb-api</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.5.2</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<type>jar</type>
</dependency>
请帮我更正这个问题,我在我的 pom 文件中找不到错误。
我在 Tomcat 8
工作您的类路径中有多个依赖项,其中包含 javax.ws.rs.core.UriBuilder
、两个 JAX-RS 1.1:
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.18</version>
</dependency>
以及 JAX-RS 2.0 之一:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
由于 JAX-RS 2.0 来自 Java EE 7,您可能需要将 javaee-api
降级到版本 6,使用方式如下:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
</dependency>
其他方式是升级 Jersey 版本,就像这个答案:
运行时调用UriBuilder#uri(String),所以需要在servlet容器中验证依赖关系