hi
i am using netbeans IDE;
I use the extension manager tool to download the websocket lib after
finishing download I select "Refresh Libs".
I provide here the code file of my application and the error in my console
when running the app
code 1
public class MHTalk {
private Form current;
private Resources theme;
WebSocket sock;
Container chatContainer;
public static final String
SERVER_URL="ws://localhost:8080/cn1-websocket-demo-server/chat";
public void init(Object context) {
theme = UIManager.initFirstTheme("/theme");
// Enable Toolbar on all Forms by default
Toolbar.setGlobalToolbar(true);
// Pro only feature, uncomment if you have a pro subscription
// Log.bindCrashProtection(true);
sock = new WebSocket(SERVER_URL) {
@Override
protected void onOpen() {
System.out.println("In onOpen");
}
@Override
protected void onClose(int statusCode, String reason) {
}
@Override
protected void onMessage(final String message) {
System.out.println("Received message "+message);
Display.getInstance().callSerially(new Runnable() {
public void run() {
if (chatContainer == null) {
return;
}
SpanLabel label = new SpanLabel();
label.setText(message);
chatContainer.addComponent(label);
chatContainer.animateHierarchy(100);
}
});
}
@Override
protected void onError(Exception ex) {
System.out.println("in onError");
}
@Override
protected void onMessage(byte[] message) {
}
};
System.out.println("Sending connect");
sock.connect();
}
void showLogin() {
Form f = new Form("MHTalk");
f.addComponent(new Label("Name: "));
final TextField nameField = new TextField();
f.addComponent(nameField);
f.addComponent(new Button(new Command("Login"){
@Override
public void actionPerformed(ActionEvent evt) {
sock.send(nameField.getText());
showChat(nameField.getText());
}
}));
f.show();
}
void showChat(String username) {
Form f= new Form("Welcome "+username+" Chat Form");
f.setLayout(new BorderLayout());
Container south = new Container();
final TextField tf = new TextField();
Button send = new Button(new Command("Send") {
@Override
public void actionPerformed(ActionEvent evt) {
sock.send(tf.getText());
tf.setText("");
}
});
chatContainer = new Container();
chatContainer.setScrollableY(true);
chatContainer.setLayout(new BoxLayout(BoxLayout.Y_AXIS));
south.addComponent(tf);
south.addComponent(send);
f.addComponent(BorderLayout.SOUTH, south);
f.addComponent(BorderLayout.CENTER, chatContainer);
f.setFormBottomPaddingEditingMode(true);
f.show();
}
public void start() {
if(current != null){
current.show();
return;
}
// Form hi = new Form("Hi World");
// hi.addComponent(new Label("Hi World"));
// hi.show();
showLogin();
}
public void stop() {
current = Display.getInstance().getCurrent();
if(current instanceof Dialog) {
((Dialog)current).dispose();
current = Display.getInstance().getCurrent();
}
}
public void destroy() {
}
}
code 2
public abstract class WebSocket {
private static int nextId = 1;
WebSocketNativeImpl impl ;
public static class WebSocketException extends IOException {
private final int code;
public WebSocketException(String message, int code) {
super(message);
this.code = code;
}
public int getCode(){
return code;
}
}
private static WeakHashMap<Integer,WebSocket> sockets = new
WeakHashMap<Integer,WebSocket>();
//Utility method for the iOS port to create a new byte array
static byte[] newByteArray(int len) {
return new byte[len];
}
static void messageReceived(int id, String message) {
WebSocket socket = sockets.get(id);
if (socket == null) {
sockets.remove(id);
} else {
socket.onMessage(message);
}
}
static void messageReceived(int id, byte[] message) {
WebSocket socket = sockets.get(id);
if (socket == null) {
sockets.remove(id);
} else {
socket.onMessage(message);
}
}
static void closeReceived(int id, int statusCode, String reason) {
WebSocket socket = sockets.get(id);
if (socket == null) {
sockets.remove(id);
} else {
socket.onClose(statusCode, reason);
sockets.remove(id);
}
}
static void openReceived(int id) {
WebSocket socket = sockets.get(id);
if (socket == null) {
sockets.remove(id);
} else {
socket.onOpen();
}
}
static void errorReceived(int id, String message, int code) {
WebSocket socket = sockets.get(id);
if (socket == null) {
sockets.remove(id);
} else {
WebSocketException ex = new WebSocketException(message,code);
socket.onError(ex);
}
}
public WebSocket(String url) {
impl =
(WebSocketNativeImpl)com.codename1.system.NativeLookup.create(WebSocketNativeImpl.class);
impl.setId(nextId++);
sockets.put(impl.getId(),this);
impl.setUrl(url);
}
protected abstract void onOpen();
protected abstract void onClose(int statusCode, String reason);
protected abstract void onMessage(String message);
protected abstract void onMessage(byte[] message);
protected abstract void onError(Exception ex);
public void send(String message) {
impl.sendString(message);
}
public void send(byte[] message) {
impl.sendBytes(message);
}
public void close() {
impl.close();
}
public void connect() {
impl.connect();
}
}
Code 3
public interface WebSocketNativeImpl extends NativeInterface {
public void setUrl(String url);
public void setId(int id);
public int getId();
public void sendBytes(byte[] message);
public void sendString(String message);
public void close();
public void connect();
}
Console error message when running the app
compile:
run:
java.lang.ClassNotFoundException: com.mhsoft.mhtalk.WebSocketNativeImplImpl
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.ClassLoader.findSystemClass(ClassLoader.java:1001)
at
com.codename1.impl.javase.ClassPathLoader.findClass(ClassPathLoader.java:100)
at
com.codename1.impl.javase.ClassPathLoader.loadClass(ClassPathLoader.java:50)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:259)
at com.codename1.system.NativeLookup.create(NativeLookup.java:81)
at com.mhsoft.mhtalk.WebSocket.<init>(WebSocket.java:87)
at com.mhsoft.mhtalk.MHTalk$1.<init>(MHTalk.java:42)
at com.mhsoft.mhtalk.MHTalk.init(MHTalk.java:42)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.codename1.impl.javase.Executor$1$1.run(Executor.java:81)
at com.codename1.ui.Display.processSerialCalls(Display.java:1151)
at com.codename1.ui.Display.mainEDTLoop(Display.java:968)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
java.lang.NullPointerException
at com.mhsoft.mhtalk.WebSocket.<init>(WebSocket.java:88)
at com.mhsoft.mhtalk.MHTalk$1.<init>(MHTalk.java:42)
at com.mhsoft.mhtalk.MHTalk.init(MHTalk.java:42)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.codename1.impl.javase.Executor$1$1.run(Executor.java:81)
at com.codename1.ui.Display.processSerialCalls(Display.java:1151)
at com.codename1.ui.Display.mainEDTLoop(Display.java:968)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
Java Result: 1
BUILD SUCCESSFUL (total time: 20 seconds)
Please help
--
You received this message because you are subscribed to the Google Groups
"CodenameOne Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
Visit this group at https://groups.google.com/group/codenameone-discussions.
To view this discussion on the web visit
https://groups.google.com/d/msgid/codenameone-discussions/6b20b864-80c3-42e9-a5ea-9f2c72d08283%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.