Ciao a tutti,
sto cercando di realizzare un'applicazione per ricercare dei dispositivi bluetooth e in caso inviare un file.
Di Java non so molto, comunque, trovando dei sorgenti in giro per il web sono riuscito a ottenere qualcosa e ho questa situazione:
quando avvio il programma con il Wireless Toolkit, il telefono(dell'emulatore) inizia a fare la ricerca e mi stampa a video dei messaggi attraverso l'oggetto Form che passo al costruttore della classe RicercaBT.

Ora, quando cerco di installare il Jar in un nokia E71, nonostante le configurazioni del progetto CLDC(1.1) e MIDP(2.0) siano giuste, ottengo l'errore sul telefono "il Jar non è supportato" e, di conseguenza, l'applicazione non viene installata.

L'applicazione viene, invece, installata se al posto di usare myform.append(..) uso dei System println nella classe RicercaBT(???????).

Classe della Midlet
codice:
package cap3;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
 
import java.util.*;
import javax.bluetooth.*;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;


public class HelloWorldMidlet extends MIDlet implements CommandListener {

	/*
	 * Label per l'uscita dall'applicazione
	 */
	private final static String EXIT_LABEL = "esci";
	

	/**
	 * Costruttore di default
	 */
	public HelloWorldMidlet() {
	}

	/**
	 * Metodo che viene invocato all'avvio della Midlet
	 */
	public void startApp() {
		Form displayable = new Form("Ricerca dispositivi");
		Command exitCommand = new Command(EXIT_LABEL, Command.EXIT, 1);
		displayable.addCommand(exitCommand);
		displayable.setCommandListener(this);
		Display.getDisplay(this).setCurrent(displayable);
		System.out.println(
                "Connecting to ");
		
		try {
		RicercaBT client = new RicercaBT(displayable);
		} catch(BluetoothStateException e)
		{
			e.printStackTrace();
		}

	}// fine

	/**
	 * Metodo che viene invocato alla pressione del tasto exit
	 */
	public void commandAction(Command c, Displayable d) {
		// Se viene premuto il pulsante di uscita si esce dall'applicazione
		if (EXIT_LABEL.equals(c.getLabel())) {
			destroyApp(true);
			notifyDestroyed();
		}// fine if
	}// fine

	/**
	 * Metodo invocato nel caso in cui la Midlet venga messa in pausa
	 */
	public void pauseApp() {
	}// fine

	/**
	 * Metodo invocato nel caso di chiusura della Midlet
	 */
	public void destroyApp(boolean unconditional) {
	}// fine
	
}// fine Midlet
Classe per la ricerca Bluetooth
codice:
package cap3;
import java.io.*;
import java.util.*;
import javax.microedition.io.*;
import javax.bluetooth.*;
import javax.microedition.lcdui.Form;

import javax.obex.*;

public class RicercaBT implements DiscoveryListener {
    LocalDevice local = null;
    DiscoveryAgent agent = null;
    int[] attrSet = null;
    RemoteDevice btDev = null;
    String serviceURL = null;
    ClientSession con = null;
    HeaderSet hdr = null;
    Form myform = null;
    
     public RicercaBT(Form myf) throws BluetoothStateException{
 
        // initialize the stack, if needed
	  local = LocalDevice.getLocalDevice();
     	  agent = local.getDiscoveryAgent();
     	  agent.startInquiry(DiscoveryAgent.GIAC, this);
          myform = myf;
     }
	
     public void deviceDiscovered(RemoteDevice btDevice,DeviceClass cod){
     	  btDev = btDevice;
     	  myform.append("Device discovered " +
          btDevice.getBluetoothAddress());
     }

     public void servicesDiscovered(int transID, ServiceRecord[] servRecord){
     	  myform.append("Discovered a service ....");
     	  for(int i =0; i < servRecord.length; i++){
     	     serviceURL = 
          servRecord[i].getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT,
             true);	
     	     myform.append("The service URL is " + serviceURL);
     	  }
     }

     public void serviceSearchCompleted(int transID, int respCode){
     	  myform.append("Service search completed ........... ");
     	  myform.append("Opening a connection with the server ....");
     	  try{
     	    con = (ClientSession)Connector.open(serviceURL);
     	    hdr = con.connect(hdr);
     	    myform.append("Response code of the server after connect..." +
            hdr.getResponseCode());


     	    //Sending a request to server for file Hello.txt
     	    hdr = con.createHeaderSet(); 
     	    hdr.setHeader(HeaderSet.TYPE,"text/vCard");
     	    hdr.setHeader(HeaderSet.NAME,"Hello.txt");
     	    Operation op = con.get(hdr);

     	    //The server is now sending the file 
     	    InputStream in = op.openInputStream();


     	    // Writing the file from server to local file system. 
	    StreamConnection filestream = 
          (StreamConnection)Connector.open("file://name=HelloFile.txt;mode=w");
	    OutputStream out = filestream.openOutputStream();

            //read and write the data
            int data = in.read();
            while(data != -1){
               out.write((byte)data);
               data = in.read();
            }

            // send the DISCONNECT Operation
            //con.disconnect();

            // cleanup
	      op.close();
            in.close();
            out.close();
     	 }
     	 catch(IOException e){
     	 	myform.append(e.getMessage());
     	 }
     }
     public void inquiryCompleted(int discType){
     	  myform.append("Inquiry completed ... ");
     	  UUID[] uuids = new UUID[1];
        uuids[0] = new UUID("1106",true);
        try{
           if(btDev == null){
	       myform.append("No device has been discovered, " +
              "hence not worth proceeding exiting .... ");
	       System.exit(1);
     	   }
     	   myform.append("Now searching for services ........ ");
     	   agent.searchServices(attrSet, uuids, btDev, this);
     	}
     	catch(BluetoothStateException e) {myform.append(e.getMessage());}
     }
/*
     public static void main(String args[]) throws IOException {
     	  FTClient client = new FTClient();
     }
*/	
}
Che hanno quei myform.append() di male???

Vi ringrazio ancitipatamente e auguri!!!