javajarjava-menokia

Unable to install. Invalid file. J2ME Application


I was making a J2ME MIDlet application. I wrote the code, compiled it to Java 1.2 bytecode, prevrified it and then packed it into jar. But when I sent it to my Nokia N72, it said: Unable to install. Invalid file.

I tried to make jar archive with zip but again it didn't work. These are my manifest and jad file, but I think they don't have problems.

Hello.jad

MIDlet-1: Hello!, icon.png, Hello
MIDlet-Jar-Size: 1932
MIDlet-Jar-URL: Hello.jar
MIDlet-Name: Hello!
MIDlet-Vendor: Mehrzad
MIDlet-Version: 1.1
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.0`

MANIFEST.MF

Manifest-Version: 1.0
MIDlet-1: Hello!, icon.png, Hello
MIDlet-vendor: Mehrzad
MicroEdition-Configuration: CLDC-1.1
MIDlet-name: Hello!
MIDlet-version: 1.1
Created-By: 1.8.0_381 (Oracle Corporation)
Nokia-MIDlet-Category: Application
MicroEdition-Profile: MIDP-2.0`

This is my code (Hello.java):

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

public class Hello extends MIDlet {
    private Form form;
    private Display display;

    public Hello() {
        form = new Form("Hello, World!");
        form.append("Powered by JavaME");
    }

    public void startApp() {
        display = Display.getDisplay(this);
        display.setCurrent(form);
    }

    public void pauseApp() { }

    public void destroyApp(boolean uncoditional) { }
}

I used these commands for compile, prevrify & making JAR:

javac -source 1.2 -target 1.2 -classpath /path/to/midpapi20.jar Hello.java

preverify1.1 -classpath /path/to/midpapi20.jar:/path/to/rt.jar Hello -d output

mv icon.png output

cd output

jar -cvf Hello.jar Hello.class icon.png

jar -ufm Hello.jar MANIFEST.MF

Solution

  • The MANIFEST.MF was this:

    Manifest-Version: 1.0
    MIDlet-1: Hello!, icon.png, Hello
    MIDlet-vendor: Mehrzad
    MicroEdition-Configuration: CLDC-1.1
    MIDlet-name: Hello!
    MIDlet-version: 1.1
    Created-By: 1.8.0_381 (Oracle Corporation)
    Nokia-MIDlet-Category: Application
    MicroEdition-Profile: MIDP-2.0
    

    But it should be like this:

    Manifest-Version: 1.0
    MIDlet-1: Hello!, icon.png, Hello
    MIDlet-Vendor: Mehrzad
    MicroEdition-Configuration: CLDC-1.1
    MIDlet-Name: Hello!
    MIDlet-Version: 1.1
    Created-By: 1.8.0_381 (Oracle Corporation)
    Nokia-MIDlet-Category: Application
    MicroEdition-Profile: MIDP-2.0
    

    The errors were in MIDlet-name (line 5), MIDlet-vendor (line 3) & MIDlet-version (line 6) in the MANIFEST.MF file.

    The "name", "vendor" & "version" should start with capital letter.

    "MIDlet-name -> MIDlet-Name"

    "MIDlet-vendor -> MIDlet-Vendor"

    "MIDlet-version -> MIDlet-Version"