我一直收到此错误,说“令牌上的语法错误”}“,删除此令牌。”在最后一行,为什么?我一直在寻找错误,但似乎无法找到它。正如您所看到的那样,它是一项服务,每隔一段时间就会调用另一项服务。
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
答案 0 :(得分:5)
这可能不是您的代码的问题,而是Eclipse。重新启动计算机,然后重新构建项目。
如果这不起作用,请尝试使用其他程序进行编译。如果它有效,那么Eclipse就是奇怪的。
答案 1 :(得分:0)
已粘贴,错误消息不正确,并且您在正确的位置具有适当数量的匹配括号(尽管上面的缩进是不可原谅的)。但是,除非一个疯狂的编译器角落无法正确匹配大括号,我猜你已经粘贴了所有但最后一个大括号,它正在抱怨。按照错误消息的建议进行操作并删除它建议的行上的令牌。
答案 2 :(得分:0)
将ADT插件升级到版本20.0.1。这是known bug in ADT 20。
清理,重新创建项目等所有其他提示都不会永久解决问题,只会暂时解决,直到您再次触发错误为止。
答案 3 :(得分:0)
通过运行clean install
和Maven -> Update Project
答案 4 :(得分:0)
对我来说,这是编码问题或一些奇怪的不可见字符,因为我粘贴了一些来自 Microsoft Teams 的代码。
我打开 Outlook(gmail、whataver),粘贴代码,将电子邮件发送给自己,然后再次复制,然后一切正常。
我无法仅使用 UITF-8 验证器解决它,notepad++ 也没有显示任何异常。