【问题标题】:Syntax error on token "}", delete this token标记“}”的语法错误,删除此标记
【发布时间】:2012-07-19 23:03:56
【问题描述】:

我不断收到此错误消息,提示“令牌“}”的语法错误,请删除此令牌。”在最后一行,为什么?我一直在寻找错误,但似乎找不到。如您所见,它是一个服务,每隔一段时间就会调用另一个服务。

package com.iggeman.updater;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

public class UpdaterService extends Service {

private static final String TAG = UpdaterService.class
        .getSimpleName();
private Updater updater;
public boolean isRunning = false;

@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public void onCreate() {
    // TODO Auto-generated method stub
    super.onCreate();

    updater = new Updater();

    Log.d(TAG, "onCreate");
}

@Override
public void onStart(Intent intent, int startId) {
    // TODO Auto-generated method stub
    super.onStart(intent, startId);

    if (this.isRunning == false) {
        updater.start();
        this.isRunning = true;
    }

    Log.d(TAG, "onStart");
}

@Override
public synchronized void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();

    if (this.isRunning) {
        updater.interrupt();
    }

    updater = null;

    Log.d(TAG, "onDestroy");
}

class Updater extends Thread {
    static final long DELAY = 10000;
    private boolean isRunning = false;

    public Updater() {
        super("Updater");
    }

    @Override
    public void run() {
        // TODO Auto-generated method stub
        super.run();
        isRunning = true;
        while (isRunning) {
            try {
                // Do something

                startService(new Intent(getBaseContext(), StartServiceTwo.class));

                Log.d(TAG, "Updater running");

                Thread.sleep(DELAY);
            } catch (InterruptedException e) {
                // interrupted
                isRunning = false;
            }
        } // while
    }

    public boolean isRunning() {
        return this.isRunning();
    }
}
}

我已经翻遍了所有的括号,但我找不到任何不在它应该在的地方的人。

编辑:

还是报错:

package com.iggeman.updater;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

public class UpdaterService extends Service {

private static final String TAG = UpdaterService.class
        .getSimpleName();
private Updater updater;
public boolean isRunning = false;

@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public void onCreate() {
    // TODO Auto-generated method stub
    super.onCreate();

    updater = new Updater();

    Log.d(TAG, "onCreate");
}

@Override
public void onStart(Intent intent, int startId) {
    // TODO Auto-generated method stub
    super.onStart(intent, startId);

    if (this.isRunning == false) {
        updater.start();
        this.isRunning = true;
    }

    Log.d(TAG, "onStart");
}

@Override
public synchronized void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();

    if (this.isRunning) {
        updater.interrupt();
    }

    updater = null;

    Log.d(TAG, "onDestroy");
}

class Updater extends Thread {
    static final long DELAY = 10000;
    private boolean isRunning = false;

    public Updater() {
        super("Updater");
    }

    @Override
    public void run() {
        // TODO Auto-generated method stub
        super.run();
        isRunning = true;
        while (isRunning) {
            try {
                // Do something

                startService(new Intent(getBaseContext(), StartServiceTwo.class));

                Log.d(TAG, "Updater running");

                Thread.sleep(DELAY);
            } catch (InterruptedException e) {
                // interrupted
                isRunning = false;
            }
        } // while
    } //Run     
} //Class updater

public boolean isRunning() {
        return this.isRunning();
   }
}  //Main body

【问题讨论】:

  • ......每个人都疯狂地发布一个答案,建议删除多余的},轻松获得10分......
  • 除了看起来像粘贴一样,他没有。一些缩进对他没有任何好处,但问题是没有额外的大括号。
  • 哈哈亚历克斯,我试过了,但据我所知,右括号的数量是正确的。
  • @Eric 自动格式化(或悬停匹配括号)并再次检查。
  • @pst 它匹配主类。它上面相同缩进级别的那个匹配内部类

标签: android eclipse syntax token


【解决方案1】:

这可能不是您的代码的问题,而是 Eclipse。重新启动计算机,然后重新构建项目。

如果这不起作用,请尝试使用其他程序进行编译。如果它有效,那么它只是 Eclipse 很奇怪。

【讨论】:

  • 你是对的。我刚刚删除了错误消息,再次编译,然后它工作正常!谢谢大家!
  • 很高兴它成功了。虽然,@whoever-downvoted-me,downvote 是怎么回事? ://
【解决方案2】:

粘贴时,错误消息不正确,并且您在正确的位置有正确数量的匹配大括号(尽管上面的缩进是不可原谅的)。但是,除非出现无法正确匹配大括号的疯狂编译器极端情况,否则我猜您已经粘贴了除了它抱怨的最后一个大括号之外的所有内容。按照错误消息的建议进行操作,并删除它建议的行上的令牌。

【讨论】:

  • 我认为 Eclipse 已经吓坏了。无论我做什么,即使我删除了整个代码,错误仍然存​​在。
  • Project 菜单运行Clean 清除构建输出,看看是否有帮助
【解决方案3】:

将您的 ADT 插件升级到版本 20.0.1。这是known bug in ADT 20

所有其他的清理、重新创建项目等技巧都不会永久解决问题,而只是暂时解决问题,直到你碰巧再次触发错误。

【讨论】:

    【解决方案4】:

    我通过运行clean installMaven -> Update Project 消除了这个错误

    【讨论】:

      【解决方案5】:

      对我来说,这是一个编码问题或一些奇怪的不可见字符,因为我从 Microsoft Teams 粘贴了一些代码。

      我打开outlook(gmail、whataver),粘贴代码,将邮件发送给自己,然后再次复制,然后就正常了。

      我无法使用唯一的 UITF-8 验证器来解决它,notepad++ 也没有显示任何奇怪的东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-29
        • 2017-02-21
        相关资源
        最近更新 更多