2013-11-10 3 views
2

Я попытался отправить объект с моего телефона Android на свой компьютер, но я продолжаю получать эту ошибку, которая не может распознать класс этого объекта. Это странно, потому что, когда я пытался отправить ocject с компьютера на себя, он работал так же. Оба пакета имеют класс User, и он реализует Serializable. скажите, пожалуйста, почему это происходит.Отправка пользовательского объекта из приложения android (клиента) на компьютер (сервер)

компьютер (сервер):

private ServerSocket server; 
private ObjectInputStream input; 
private Socket connection; 
private User message; 

public void brains() throws IOException { 
    while (true) { 
     System.out.println("waiting for connection..."); 
     try { 
      server = new ServerSocket(4567, 100); 
      connection = server.accept(); 
      System.out.println("you are now conected"); 
     } catch (IOException ioException) { 
      ioException.printStackTrace(); 
     } 
     System.out.println("Setting up Streams.."); 

     input = new ObjectInputStream(connection.getInputStream()); 
     try { 
      message = (User) input.readObject(); 
     } catch (ClassNotFoundException ex) { 
      System.out.println("I dont know wtf"); 
     } 

     System.out.print("the user "); 
     message.printUserName(); 
     System.out.print(", used your app at "); 
     message.printTime(); 
     System.out.println(""); 
        System.out.println("Shutting down!"); 
     try { 
      input.close(); 
      connection.close(); 
      server.close(); 
     } catch (IOException ioException) { 
      ioException.printStackTrace(); 
     } 

    } 

} 

телефон (клиент):

private User user; 
private Socket connection; 
private ObjectOutputStream output; 

public void run() { 

    try{ 
    connection = new Socket (InetAddress.getByName(ip), 4567); 
    output = new ObjectOutputStream(connection.getOutputStream()) ; 

    user = new User("bla bla", "14:09"); 
    output.writeObject(user); 
    output.flush(); 



    }catch(Exception e){ 
     System.out.print(e); 
    }finally{ 
     try{ 
     output.close(); 
     connection.close(); 
     } 
    catch(Exception e){ 
     System.out.print(e); 
    } 




    } 



} 

это журнал консоли:

waiting for connection... 
you are now conected 
Setting up Streams.. 
Dont recognize the class 
the user Exception in thread "main" java.lang.NullPointerException 
at whosUsing.whosUsing.brains(whosUsing.java:34) 
at whosUsing.test.main(test.java:9) 
+0

сделать оба класса пользователя существуют в том же пакете? см. Http://stackoverflow.com/questions/2916107/readobject-method-throws-classnotfoundexception – coderatchet

ответ

0

Если класс не в точности то же самое пакет как на клиенте, так и на сервере, тогда класс, который проходит, не будет распознан системой.

введите файл User.java в том же пакете: «com.myapp.shared.User». это должно решить вашу проблему.

см. readobject method throws ClassNotFoundException для аналогичной проблемы.

0

Убедитесь, что имя пакета и имя класса клиента на телефоне должны быть точно такими же на стороне сервера на компьютере. Взгляните на это. Надеюсь, что это поможет

ObjectInputStream readObject(): ClassNotFoundException

+0

Это должен быть комментарий больше, чем ответ –

Смежные вопросы