首页 > 解决方案 > 诺基亚 3310:MIDlet 总是给出“无法编译文件”

问题描述

在阅读评论证明可以为新的诺基亚 3310 3G (TA-1006)编写自定义应用程序后,我正在尝试运行我自己的应用程序。

在阅读了大量关于 MIDP、CLDC 等的内容后,我安装了Java ME SDK(在全新的 Ubuntu 安装上,因为 Oracle 只支持它或 Windows)、EclipseSun Wireless 工具包

首先,我找不到任何关于设备支持哪个版本的 MIDP 和 CLDC 的信息,所以我继续尝试了一些可能的排列,这些是我的结果:

CLDC \ MIDP | 1.0 | 2.0 | 2.1 |
1.0         |  *  |  *  |  X  |
1.1         |  *  |  *  |  ?  |
1.8         |  X  |  X  |  ?  |

自 MIDP 2.1 以来我没有尝试过的?那些不起作用,也没有任何收获,X那些给出错误“无法安装 [MIDlet 名称],因为它不适用于此手机”。

所以看起来手机支持 MIDP 2.0 配置文件和 CLDC 1.1 配置,但是当我尝试安装我的应用程序(使用 的任何配置*)时,它总是这样:

  1. [MIDlet 名称] 不受信任。继续吗? ” > 好的(这是预期的)
  2. 无法编译文件”(这是我卡住的地方)

到目前为止我尝试了什么(除了各种版本排列)

public void startApp()
{
    Form form = new Form("Hello");
    form.append(new StringItem("Hello", "World!");
    Display.getDisplay(this).setCurrent(form);
}

我总是通过单击“应用程序描述符”视图中的“打包 > 创建包”按钮来生成*.jar.jad文件。

在某些时候,它开始尝试各种设置,我不太相信它会起作用,阅读和冲洗重复。在寻找替代品时,整个旅程变得非常令人沮丧,因为很多链接要么位于不可靠的网站、404 或旧的 3310 手机上。

TL;博士

为新的诺基亚 3310 编译一个简单的(未签名的)应用程序需要哪些配置和构建步骤?


以下是 imo 应该工作的最简单的失败示例的全部内容:

$ tree
.
├── Application Descriptor
├── bin
│   └── com
│       └── stackoverflow
│           └── kvn
│               └── test
│                   └── SOExample.class
├── build.properties
├── deployed
│   └── DefaultColorPhoneM2.0
│       ├── SOTest.jad
│       └── SOTest.jar
├── res
└── src
    └── com
        └── stackoverflow
            └── kvn
                └── test
                    └── SOExample.java

13 directories, 6 files
$ cat Application\ Descriptor 
MIDlet-1: SOExample,,com.stackoverflow.kvn.test.SOExample
MIDlet-Jar-URL: SOTest.jar
MIDlet-Name: SOTest MIDlet Suite
MIDlet-Vendor: MIDlet Suite Vendor
MIDlet-Version: 1.0.0
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.0
$ cat build.properties 
# MTJ Build Properties
DefaultColorPhoneM2.0.includes=src/com/stackoverflow/kvn/test/SOExample.java\

DefaultColorPhoneM2.0.excludes=\

$ cat src/com/stackoverflow/kvn/test/SOExample.java 
package com.stackoverflow.kvn.test;

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

public class SOExample extends MIDlet {

    private Form form;

    protected void destroyApp(boolean unconditional)
        throws MIDletStateChangeException { /* nop */ }

    protected void pauseApp() { /* nop */ }

    protected void startApp() throws MIDletStateChangeException {
        form = new Form("Hello");
        form.append(new StringItem("Hello", "World!"));
        Display.getDisplay(this).setCurrent(form);
    }
}

设备软件信息:型号:TA-1006;软件:15.0.0.17.00;操作系统版本:MOCOR_W17.44.3_Release;固件号:sc7701_barphone

标签: java-menokiamidletmidp-2.0

解决方案


推荐阅读