令牌“}”上的语法错误,删除此令牌

时间:2012-07-19 23:03:57

标签: android eclipse syntax token

我一直收到此错误,说“令牌上的语法错误”}“,删除此令牌。”在最后一行,为什么?我一直在寻找错误,但似乎无法找到它。正如您所看到的那样,它是一项服务,每隔一段时间就会调用另一项服务。

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

5 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

已粘贴,错误消息不正确,并且您在正确的位置具有适当数量的匹配括号(尽管上面的缩进是不可原谅的)。但是,除非一个疯狂的编译器角落无法正确匹配大括号,我猜你已经粘贴了所有但最后一个大括号,它正在抱怨。按照错误消息的建议进行操作并删除它建议的行上的令牌。

答案 2 :(得分:0)

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

清理,重新创建项目等所有其他提示都不会永久解决问题,只会暂时解决,直到您再次触发错误为止。

答案 3 :(得分:0)

通过运行clean installMaven -> Update Project

,我摆脱了这个错误

答案 4 :(得分:0)

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

我打开 Outlook(gmail、whataver),粘贴代码,将电子邮件发送给自己,然后再次复制,然后一切正常。

我无法仅使用 UITF-8 验证器解决它,notepad++ 也没有显示任何异常。