Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid java.lang.ClassCastException with a socket
    primarykey
    data
    text
    <p>I'm developing an android application to connect to a server. I'm having some issues with errors, the exact same application works perfectly with java swing on a standard pc. The exact error is E/AndroidRuntime(1257): java.lang.ClassCastException: net.rc.packet.incoming.lister.PServerList cannot be cast to net.rc.packet.Packet This is my PServerList class</p> <pre><code>package net.rc.packet.incoming.lister; import java.util.List; import net.rc.entity.ServerDescription; import net.rc.packet.incoming.ServerPacket; public class PServerList implements ServerPacket { public List &lt; ServerDescription &gt; server_descriptions; public PServerList(List &lt; ServerDescription &gt; server_descriptions) { this.server_descriptions = server_descriptions; } public String toString() { StringBuilder string_builder = new StringBuilder(); string_builder.append("["); for (ServerDescription server_description: server_descriptions) { string_builder.append(server_description); string_builder.append(", "); } string_builder.append("]"); return string_builder.toString(); } } } </code></pre> <p>And here's my socketprocessor class</p> <pre><code>package net.rc.socket; import java.util.List; import java.util.Queue; import java.util.concurrent.LinkedBlockingQueue; import javax.inject.Inject; import net.rc.packet.Packet; import net.rc.socket.processor.PacketProcessor; public class SocketProcessor { @ Inject public SocketProcessor(List &lt; PacketProcessor &gt; all_processors) { this.all_processors = all_processors; } private final List &lt; PacketProcessor &gt; all_processors; private final Queue &lt; Byte &gt; buffer = new LinkedBlockingQueue &lt; Byte &gt; (); private PacketProcessor active_processor = null; public void accept(byte[] bytes) { for (int i = 0; i &lt; bytes.length; i++) { buffer.offer(bytes[i]); } } public boolean isComplete() { while (!buffer.isEmpty()) { if (active_processor == null) { int packet_code = (buffer.peek() - 32) &amp; 0xFF; for (PacketProcessor processor: all_processors) { if (processor.handles(packet_code)) { active_processor = processor; break; } } } else { if (active_processor.isSegmentDone() &amp;&amp; !active_processor.isComplete()) { active_processor = null; continue; } } if (active_processor.isComplete()) { return true; } active_processor.accept(buffer.poll()); } if (active_processor == null) { return false; } else { return active_processor.isComplete(); } } public &lt; T extends Packet &gt; T getPacket() { if (!isComplete()) return null; T packet = active_processor.getPacket(); active_processor = null; return packet; } public boolean isEmpty() { return buffer.isEmpty(); } } </code></pre> <p>Any ideas? I'm stuck. Here's the logcat</p> <pre><code>E/AndroidRuntime(1257): java.lang.ClassCastException: net.rc.packet.incoming.lister.PServerList cannot be cast to net.rc.packet.Packet E/AndroidRuntime(1257): at net.rc.socket.SocketProcessor.getPacket(SocketProcessor.java:70) E/AndroidRuntime(1257): at net.rc.packet.DefaultPacketServer.receive(DefaultPacketServer.java:40) E/AndroidRuntime(1257): at net.rc.RemoteControlHandler.run(RemoteControlHandler.java:23) E/AndroidRuntime(1257): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) E/AndroidRuntime(1257): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) E/AndroidRuntime(1257): at java.lang.Thread.run(Thread.java:856) </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload