[英]Exception :com.sun.jersey.spi.inject.Errors$ErrorMessagesException
[英]Jersey: com.sun.jersey.spi.inject.Errors$ErrorMessagesException
我使用球衣(1.8),maven和hibernate時遇到了問題。
我收到此錯誤(“完整”日志)
INFO: Scanning for root resource and provider classes in the packages:
de.tum.fml.idp.backend.rest
Dez 04, 2013 2:29:40 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Root resource classes found:
class de.tum.fml.idp.backend.rest.PlayerWebService
class de.tum.fml.idp.backend.rest.RestSample
Dez 04, 2013 2:29:40 PM com.sun.jersey.api.core.ScanningResourceConfig init
INFO: No provider classes found.
Dez 04, 2013 2:29:41 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
INFO: Initiating Jersey application, version 'Jersey: 1.8 06/24/2011 12:17 PM'
Dez 04, 2013 2:29:42 PM com.sun.jersey.spi.inject.Errors processErrorMessages
SEVERE: The following errors and warnings have been detected with resource and/or provider classes:
SEVERE: Producing media type conflict. The resource methods public java.util.List de.tum.fml.idp.backend.rest.PlayerWebService.getPlayerIDs() and public de.tum.fml.idp.gamelog.backend.beans.Player de.tum.fml.idp.backend.rest.PlayerWebService.createUser() can produce the same media type
SEVERE: Producing media type conflict. The resource methods public java.util.List de.tum.fml.idp.backend.rest.PlayerWebService.getPlayers() and public de.tum.fml.idp.gamelog.backend.beans.Player de.tum.fml.idp.backend.rest.PlayerWe
bService.createUser() can produce the same media type
2013-12-04 14:29:42.010:WARN:/0.1-SNAPSHOT:unavailable
com.sun.jersey.spi.inject.Errors$ErrorMessagesException
at com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170)
at com.sun.jersey.spi.inject.Errors.postProcess(Errors.java:136)
at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:199)
at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:771)
at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:766)
at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:488)
at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:318)
at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:609)
at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:373)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:556)
at javax.servlet.GenericServlet.init(GenericServlet.java:241)
at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:477)
at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:293)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:730)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:254)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1240)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:689)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:482)
at org.eclipse.jetenter code herety.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:172)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
at org.eclipse.jetty.server.Server.doStart(Server.java:281)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.cargo.container.jetty.internal.JettyExecutorThread.run(JettyExecutorThread.java:69)
2013-12-04 14:29:42.022:INFO:oejw.WebInfConfiguration:Extract jar:file:/C:/Users/Stefan/Dropbox/Studium/TUM/IDP/repo/backend/backend/target/cargo/configurations/jetty7x/cargocpc.war!/ to C:\Users\Stefan\AppData\Local\Temp\jetty-0.0.0.0-8080-cargocpc.war-_cargocpc-any-\webapp
2013-12-04 14:29:42.052:INFO:oejsh.ContextHandler:started o.e.j.w.WebAppContext{/cargocpc,file:/C:/Users/Stefan/AppData/Local/Temp/jetty-0.0.0.0-8080-cargocpc.war-_cargocpc-any-/webapp/},C:\Users\Stefan\Dropbox\Studium\TUM\IDP\repo\backend\backend\target\cargo\configurations\jetty7x\cargocpc.war
2013-12-04 14:29:42.108:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:8080
這是我用過的代碼:
package de.tum.fml.idp.backend.rest;
import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import de.tum.fml.idp.backend.rest.interfaces.PlayerManagment;
import de.tum.fml.idp.gamelog.backend.beans.Player;
@Path("/players")
public class PlayerWebService implements PlayerManagment {
@Override
@GET
public Player createUser() {
// TODO Auto-generated method stub
return new Player();
}
@Override
@POST
public Player updatePlayer(Player player) {
// TODO Auto-generated method stub
return new Player();
}
@Override
@GET
@Path("/getPlayer/{param}")
public Player getPlayer(@PathParam("param") int id) {
// TODO Auto-generated method stub
Player bla = new Player();
bla.setId(-1);
return bla;
}
@Override
@GET
public List<Player> getPlayers() {
// TODO Auto-generated method stub
return null;
}
@Override
@GET
public List<Integer> getPlayerIDs() {
// TODO Auto-generated method stub
return null;
}
}
和Player類。
package de.tum.fml.idp.gamelog.backend.beans;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.xml.bind.annotation.XmlRootElement;
import org.hibernate.annotations.Entity;
//@XmlRootElement
public class Player {
// @Id
// @GeneratedValue
private int id;
private String name;
private String password;
Avatar avatar;
private PlayerProperties properties;
private int tempId;
private int availablePropertyPoints;
private int totalPropertyPoints;
// @OneToMany
private ArrayList<AchievedAchievment> achievments;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String string) {
this.name = string;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Avatar getAvatar() {
return avatar;
}
public void setAvatar(Avatar avatar) {
this.avatar = avatar;
}
public PlayerProperties getProperties() {
return properties;
}
public void setProperties(PlayerProperties properties) {
this.properties = properties;
}
public int getTempId() {
return tempId;
}
public void setTempId(int tempId) {
this.tempId = tempId;
}
public int getAvailablePropertyPoints() {
return availablePropertyPoints;
}
public void setAvailablePropertyPoints(int availablePropertyPoints) {
this.availablePropertyPoints = availablePropertyPoints;
}
public int getTotalPropertyPoints() {
return totalPropertyPoints;
}
public void setTotalPropertyPoints(int totalPropertyPoints) {
this.totalPropertyPoints = totalPropertyPoints;
}
public List<AchievedAchievment> getAchievments() {
if(achievments == null)
achievments = new ArrayList<AchievedAchievment>();
return achievments;
}
public void setAchievments(ArrayList<AchievedAchievment> achievments) {
this.achievments = achievments;
}
public void addAchievment(AchievedAchievment aa1) {
if(achievments == null)
achievments = new ArrayList<AchievedAchievment>();
if(aa1.getPlayer() != this)
throw new RuntimeException("Player: Achievment was already given to another user");
else
achievments.add(aa1);
}
}
有誰知道為什么這不起作用? 我已經嘗試過評論幾乎所有的東西,幾個不同的maven依賴,但它不會開始工作。
“玩具示例”工作正常...: - /
我希望你能幫幫我,
KR,
錯誤消息告訴您出了什么問題(您必須查找以SEVERE
開頭的行):
嚴重:產生媒體類型沖突。 資源方法public java.util.List de.tum.fml.idp.backend.rest.PlayerWebService.getPlayerIDs()和public de.tum.fml.idp.gamelog.backend.beans.Player de.tum.fml.idp .backend.rest.PlayerWebService.createUser()可以生成相同的媒體類型
嚴重:產生媒體類型沖突。 資源方法public java.util.List de.tum.fml.idp.backend.rest.PlayerWebService.getPlayers()和public de.tum.fml.idp.gamelog.backend.beans.Player de.tum.fml.idp .backend.rest.PlayerWebService.createUser()可以生成相同的媒體類型
這意味着您有相同路徑的多個GET端點(在類'annotation @Path("/players")
),產生相同的媒體類型:
@GET
public List<Player> getPlayers()
@GET
public Player createUser()
@GET
public List<Integer> getPlayerIDs()
在向/players
發送GET請求時,澤西島無法判斷您要呼叫哪一個。 您需要為其中一些端點定義單獨的路徑。
如果您的意圖實際上是讓它們具有相同的路徑,則需要添加具有不同媒體類型的@Produces
注釋,因此Jersey可以根據Accept
標頭選擇正確的方法。 如果請求正文請求,您也可以使用@Consumes
注釋。 否則,您需要添加@Path
注釋或更改方法的請求類型,以避免此沖突。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.