【问题标题】:3 x "Syntax error on token(s)" - Basic Java declarations3 x“令牌语法错误”-基本 Java 声明
【发布时间】:2012-08-29 10:59:52
【问题描述】:

我正在开发一个 Java RESTful Web 服务,由于某种奇怪的原因,我得到了 3 个我完全不确定的 Java 标记。

这是我的代码:

package au.com.rest; //self made package
import javax.ws.rs.*; //JaxRS
import javax.ws.rs.core.*;
import au.edu.uts.it.wsd.*; //Package containing the relevant classes

@Path("/feedlist")
public class RESTFeedService {

String name, uri, action, feedFile;
String textReply = "Feed ";
String xmlReply = "<?xml version=\"1.0\"?> \n<feeds> \n";

feedFile = "/tmp/feeds.txt";
action = request.getParameter("action");
name = request.getParameter("feedName");
uri = request.getParameter("uri");

Feed feed = new Feed(name, uri);
FeedList feedList = new FeedListImpl();

feedList.load(feedFile);

@GET
@Produces(MediaType.TEXT_PLAIN)
public String showTextFeeds()
{
    for (Feed f:feedList.list()){
        textReply += "[Feed Name: " + f.getName() + ", ";
        textReply += "[Feed URI: " + f.getURI() + "]"; }
    return textReply;
}



我得到的错误在以下几行:

String xmlReply = "<?xml version=\"1.0\"?> \n<feeds> \n";

标记“;”的语法错误,{ 应在此标记之后

feedFile = "/tmp/feeds.txt";

标记“字符串”的语法错误,@预期

public String showTextFeeds()

标记语法错误,结构错误

请指出我做错了什么的正确方向。 谢谢!

【问题讨论】:

  • 注意:下面这段代码编译得好吗? @GET @Produces(MediaType.APPLICATION_XML) public String showXmlFeeds() { for (Feed f:feedList.list()){ xmlReply += " \n " + f.getName() + "名称> \n"; xmlReply += " " + f.getURI() + " \n \n"; } 返回 xmlReply; }
  • 上面的代码和原帖中的“showTextFeeds”方法一模一样,虽然它返回的是XML而不是纯文本。

标签: java rest


【解决方案1】:
String name, uri, action, feedFile;

feedFile = "/tmp/feeds.txt";
action = request.getParameter("action");
name = request.getParameter("feedName");
uri = request.getParameter("uri");

应该是

String name = request.getParameter("feedName");
String uri = request.getParameter("uri");
String feedFile  = "/tmp/feeds.txt";
String action = request.getParameter("action");

【讨论】:

    【解决方案2】:

    您的代码只能包含字段。您可以将它们移动到构造函数中。

    public RESTFeedService(Request request) {
        feedFile = "/tmp/feeds.txt";
        action = request.getParameter("action");
        name = request.getParameter("feedName");
        uri = request.getParameter("uri");
    
        feed = new Feed(name, uri);
        feedList = new FeedListImpl();
    
        feedList.load(feedFile);
    

    【讨论】:

      【解决方案3】:

      您不能将任意语句放在类级别。像 assignments 和 feedList.load(feedFile); 这样的语句必须在方法中,而不是在类级别,在方法之外。

      【讨论】:

      • 非常感谢,这对我帮助很大。
      猜你喜欢
      • 1970-01-01
      • 2016-11-08
      • 1970-01-01
      • 2013-07-16
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多