java弱终端开发素来以多终端多sdk版本方面的麻烦著称,机顶盒上相关的问题少一些,不过也是同样存在的。 本方案尝试的起因是想在程序中使用interrupt函数结束线程,以便在某些盒子上可以较快的结束工作线程, 但是cldc-1.0中是不支持该函数的,如下: s_mainThread.currentThread().interrupt(); 首先准备两个版本sdk下相应的实现代码 ./platform/platform-CLDC-1.0.java package cldcPlatform; public class cldcPlatform { public static void interrupt(Thread thread) { //if(thread != null) //{ // thread.interrupt(); //} } } ./platform/platform-CLDC-1.1.java package cldcPlatform; public class cldcPlatform { public static void interrupt(Thread thread) { if(thread != null) { thread.interrupt(); } } } 在项目ant脚本中插入自己的预处理脚本,如下: ./nbproject/my_custom_task.xml <target name="my-post-init"> <echo level="warning" message="${platform.configuration}"/> <copy file="./platform/platform-${platform.configuration}.java" tofile="./src/cldcPlatform/cldcPlatform.java" overwrite="true"/> </target> 如此将会在每次编译之前将对应平台的代码覆盖到项目src目录下。 原来调用interrupt的位置则修改为如下形式: cldcPlatform.interrupt(s_mainThread); ok,切换项目的cldc版本设置以后,均顺利生成。