2011-06-27 48 views
2

运行应用程序时,我无法查看仿真器中的任何内容。生成不失败,我可以成功运行应用程序。当我关闭模拟器时出现错误。我可以在这里提供代码和日志。运行j2me应用程序时出现问题

import javax.microedition.lcdui.*; 
import javax.microedition.midlet.*; 
import java.io.*; 
import java.lang.*; 
import javax.microedition.io.*; 
import javax.microedition.rms.*; 


public class Login extends MIDlet implements CommandListener { 
    TextField ItemName=null; 
    TextField ItemNo=null; 
    TextField UserName=null; 
    TextField Password=null; 
    Form authForm,mainscreen; 
    TextBox t = null; 
    StringBuffer b = new StringBuffer(); 
    private Display myDisplay = null; 
    private Command okCommand = new Command("Login", Command.OK, 1); 
    private Command exitCommand = new Command("Exit", Command.EXIT, 2); 
    private Command sendCommand = new Command("Send", Command.OK, 1); 
    private Command backCommand = new Command("Back", Command.BACK, 2); 
    private Alert alert = null; 

    public Login() { 
     ItemName=new TextField("Item Name","",10,TextField.ANY); 
     ItemNo=new TextField("Item No","",10,TextField.ANY); 
     myDisplay = Display.getDisplay(this); 
    UserName=new TextField("Your Name","",10,TextField.ANY); 
    Password=new TextField("Password","",10,TextField.PASSWORD); 
    authForm=new Form("Identification"); 
    mainscreen=new Form("Logging IN"); 
     mainscreen.addCommand(sendCommand); 
    mainscreen.addCommand(backCommand); 
    authForm.append(UserName); 
    authForm.append(Password); 
    authForm.addCommand(okCommand); 
    authForm.addCommand(exitCommand); 
    authForm.setCommandListener(this); 
    myDisplay.setCurrent(authForm); 
    } 

    public void startApp() throws MIDletStateChangeException { 
    } 

    public void pauseApp() { 
    } 



    protected void destroyApp(boolean unconditional) 
      throws MIDletStateChangeException { 
    } 


    public void commandAction(Command c, Displayable d) { 

     if ((c == okCommand) && (d == authForm)) { 
    if (UserName.getString().equals("") || Password.getString().equals("")){ 
     alert = new Alert("Error", "You should enter Username and Password", null, AlertType.ERROR); 
     alert.setTimeout(Alert.FOREVER); 
     myDisplay.setCurrent(alert); 
    } 
    else{ 
    //myDisplay.setCurrent(mainscreen); 
    login(UserName.getString(),Password.getString()); 
    } 
    } 
     if ((c == backCommand) && (d == mainscreen)) { 
     myDisplay.setCurrent(authForm); 
    } 
    if ((c == exitCommand) && (d == authForm)) { 
     notifyDestroyed(); 
    } 
     if ((c == sendCommand) && (d == mainscreen)) { 
      if(ItemName.getString().equals("") || ItemNo.getString().equals("")){ 

      } 
      else{ 
     sendItem(ItemName.getString(),ItemNo.getString()); 
      } 
    } 
    } 



     public void login(String UserName,String PassWord) { 
    HttpConnection connection=null; 
    DataInputStream in=null; 
    String url="http://olario.net/submitpost/submitpost/login.php"; 

    OutputStream out=null; 
    try 
    { 
     connection=(HttpConnection)Connector.open(url); 
     connection.setRequestMethod(HttpConnection.POST); 
     connection.setRequestProperty("IF-Modified-Since", "2 Oct 2002 15:10:15 GMT"); 
     connection.setRequestProperty("User-Agent","Profile/MIDP-1.0 Configuration/CLDC-1.0"); 
     connection.setRequestProperty("Content-Language", "en-CA"); 
     connection.setRequestProperty("Content-Length",""+ (UserName.length()+PassWord.length())); 
     connection.setRequestProperty("username",UserName); 
     connection.setRequestProperty("password",PassWord); 
    out = connection.openDataOutputStream(); 
    out.flush(); 
    in = connection.openDataInputStream(); 
    int ch; 
    while((ch = in.read()) != -1) { 
     b.append((char) ch); 
     //System.out.println((char)ch); 
    } 
    //t = new TextBox("Reply",b.toString(),1024,0); 
    //mainscreen.append(b.toString()); 
    String auth=b.toString(); 
    if(in!=null) 
     in.close(); 
    if(out!=null) 
     out.close(); 
    if(connection!=null) 
     connection.close(); 

    if(auth.equals("ok")){ 
       mainscreen.setCommandListener(this); 
     myDisplay.setCurrent(mainscreen); 

    } 
     } 
    catch(IOException x){ 

     } 


     } 


     public void sendItem(String itemname,String itemno){ 
      HttpConnection connection=null; 
    DataInputStream in=null; 
    String url="http://www.olario.net/submitpost/submitpost/submitPost.php"; 

    OutputStream out=null; 
    try 
    { 
     connection=(HttpConnection)Connector.open(url); 
     connection.setRequestMethod(HttpConnection.POST); 
     connection.setRequestProperty("IF-Modified-Since", "2 Oct 2002 15:10:15 GMT"); 
     connection.setRequestProperty("User-Agent","Profile/MIDP-1.0 Configuration/CLDC-1.0"); 
     connection.setRequestProperty("Content-Language", "en-CA"); 
     connection.setRequestProperty("Content-Length",""+ (itemname.length()+itemno.length())); 
     connection.setRequestProperty("itemCode",itemname); 
     connection.setRequestProperty("qty",itemno); 
    out = connection.openDataOutputStream(); 
    out.flush(); 
    in = connection.openDataInputStream(); 
    int ch; 
    while((ch = in.read()) != -1) { 
     b.append((char) ch); 
     //System.out.println((char)ch); 
    } 
    //t = new TextBox("Reply",b.toString(),1024,0); 
    //mainscreen.append(b.toString()); 
    String send=b.toString(); 
    if(in!=null) 
     in.close(); 
    if(out!=null) 
     out.close(); 
    if(connection!=null) 
     connection.close(); 

    if(send.equals("added")){ 
       alert = new Alert("Error", "Send Successfully", null, AlertType.INFO); 
     alert.setTimeout(Alert.FOREVER); 
     myDisplay.setCurrent(alert); 

    } 
     } 
    catch(IOException x){ 

     } 

     } 
} 

和日志

pre-init: 
pre-load-properties: 
exists.config.active: 
exists.netbeans.user: 
exists.user.properties.file: 
load-properties: 
exists.platform.active: 
exists.platform.configuration: 
exists.platform.profile: 
basic-init: 
cldc-pre-init: 
cldc-init: 
cdc-init: 
ricoh-pre-init: 
ricoh-init: 
semc-pre-init: 
semc-init: 
savaje-pre-init: 
savaje-init: 
sjmc-pre-init: 
sjmc-init: 
ojec-pre-init: 
ojec-init: 
cdc-hi-pre-init: 
cdc-hi-init: 
nokiaS80-pre-init: 
nokiaS80-init: 
nsicom-pre-init: 
nsicom-init: 
post-init: 
init: 
conditional-clean-init: 
conditional-clean: 
deps-jar: 
pre-preprocess: 
do-preprocess: 
Pre-processing 0 file(s) into /home/sreekumar/NetBeansProjects/Login/build/preprocessed directory. 
post-preprocess: 
preprocess: 
pre-compile: 
extract-libs: 
do-compile: 
post-compile: 
compile: 
pre-obfuscate: 
proguard-init: 
skip-obfuscation: 
proguard: 
post-obfuscate: 
obfuscate: 
lwuit-build: 
pre-preverify: 
do-preverify: 
post-preverify: 
preverify: 
pre-jar: 
set-password-init: 
set-keystore-password: 
set-alias-password: 
set-password: 
create-jad: 
add-configuration: 
add-profile: 
do-extra-libs: 
nokiaS80-prepare-j9: 
nokiaS80-prepare-manifest: 
nokiaS80-prepare-manifest-no-icon: 
nokiaS80-create-manifest: 
jad-jsr211-properties.check: 
jad-jsr211-properties: 
semc-build-j9: 
do-jar: 
nsicom-create-manifest: 
do-jar-no-manifest: 
update-jad: 
Updating application descriptor: /home/sreekumar/NetBeansProjects/Login/dist/Login.jad 
Generated "/home/sreekumar/NetBeansProjects/Login/dist/Login.jar" is 3501 bytes. 
sign-jar: 
ricoh-init-dalp: 
ricoh-add-app-icon: 
ricoh-build-dalp-with-icon: 
ricoh-build-dalp-without-icon: 
ricoh-build-dalp: 
savaje-prepare-icon: 
savaje-build-jnlp: 
post-jar: 
jar: 
pre-run: 
netmon.check: 
open-netmon: 
cldc-run: 
Copying 1 file to /home/sreekumar/NetBeansProjects/Login/dist/nbrun4244989945642509378 
Copying 1 file to /home/sreekumar/NetBeansProjects/Login/dist/nbrun4244989945642509378 
Jad URL for OTA execution: http://localhost:8082/servlet/org.netbeans.modules.mobility.project.jam.JAMServlet//home/sreekumar/NetBeansProjects/Login/dist//Login.jad 
Starting emulator in execution mode 
Running with storage root /home/sreekumar/j2mewtk/2.5.2/appdb/temp.DefaultColorPhone1 
/home/sreekumar/NetBeansProjects/Login/nbproject/build-impl.xml:915: Execution failed with error code 143. 
BUILD FAILED (total time: 35 seconds) 

回答

1

我想,这是不是编码相关的问题。如果同时运行相同仿真器皮肤的多个实例,则工具包将为每个皮肤生成唯一的文件路径。例如,在Windows上,DefaultColorPhone的实例可能具有文件路径名称workdir \ appdb \ temp.DefaultColorPhone1,workdir \ appdb \ temp.DefaultColorPhone2等等。

解决方案:文件workdir \ appdb \ DefaultColorPhone \ in.use跟踪标记为使用中的存储根的数量。如果模拟器崩溃,则需要删除in.use文件

0

您正在构造函数中调用Display.getDisplay(this)。建议在startApp()中调用它。因此请尝试将显示代码移入startApp()。

public void startApp() throws MIDletStateChangeException { 
    myDisplay= Display.getDisplay(this); 
    myDisplay.setCurrent(authForm); 
    } 

您还在commandAction函数内部调用login()。此代码在系统线程上运行,建议快速返回。你的login()调用会阻塞这个线程。您应该在单独的线程中运行login(),因为它会阻止等待服务器响应。创建一个实现Runnable的单独类,为其提供用户名和密码的字符串。在构造函数中传入midlet。将login()代码放入run()方法中。一旦你传递了所需的用户名和密码,就可以从commandAction中启动线程。当你从服务器获得结果回调midlet更新显示。

相关问题