运行应用程序时,我无法在模拟器中查看任何内容。 Build没有失败,我可以成功运行应用程序。当我关闭模拟器时,我收到一个错误。我可以在这里提供代码和日志。
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)
答案 0 :(得分:1)
我认为这不是编码相关的问题。如果同一个仿真器外观的多个实例同时运行,则工具包会为每个实例生成唯一的文件路径。例如,在Windows上,DefaultColorPhone实例的文件路径名可能为workdir \ appdb \ temp.DefaultColorPhone1,workdir \ appdb \ temp.DefaultColorPhone2,等等。
解决方案:文件workdir \ appdb \ DefaultColorPhone \ in.use会跟踪标记为正在使用的存储根的数量。如果模拟器崩溃,则需要删除in.use文件
答案 1 :(得分: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以更新显示时。