Я получаю NotSerializableException из довольно долгого времени. полная ошибка как этотПолучение NotSerializableException: sun.java2d.SunGraphics2D
java.io.NotSerializableException: sun.java2d.SunGraphics2D
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at SOM_thread1.run(soms1.java:354)
ошибка находится на out.writeObject (г); полный код выглядит следующим образом
public class soms1 extends JApplet implements Serializable {
/**
*
*/
private static final long serialVersionUID = -743443566771258883L;
// class of weights and samples which performs operations on the SOM
public static Screen screen = new Screen();
// Socket Connection
private static Socket clientSocket = null;
private static PrintStream os = null;
private static BufferedReader inputLine = null;
// thread responsible for updating Screen
static public SOM_thread1 thread = null;
Toolkit tool;
public void init() {
String sentence;
tool = Toolkit.getDefaultToolkit();
try {
clientSocket = new Socket("localhost", 6789);
thread = new SOM_thread1(clientSocket);
setup_applet();
setup_radios();
setup_layout();
screen.init_Screen();
thread.init();
thread.start();
inputLine = new BufferedReader(new InputStreamReader(System.in));
sentence = inputLine.readLine();
if (clientSocket != null && os != null
&& sentence.equals("server:apl")) {
thread.set_state(2);
}
} catch (UnknownHostException e) {
System.err.println(e);
} catch (IOException e) {
System.err.println(e);
}
}
}
class SOM_thread1 extends Thread implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
int state = -1;
int MAX_ITER = 0;
float t;
float T_INC;
private ObjectOutputStream out = null;
private Socket clientSocket = null;
public transient Graphics g = null;
public SOM_thread1(Socket clientSocket) {
this.clientSocket = clientSocket;
}
/*Updates the class Screen according the to values retrieved from the user interface*/
public void run() {
while (true) {
// Send data to server
try {
g = soms1.screen.getGraphics();
out = new ObjectOutputStream(clientSocket.getOutputStream());
out.writeObject(g);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
// Allow other operations
yield();
} // while(true)
}
}
пожалуйста, сообщите, какой объект я должен сериализовать заранее спасибо
спасибо для предложения я пытаюсь отправить графические данные на сервер через графический объект. для этого я использовал метод Screen.getGraphics(), предоставленный sun.java2d.SunGraphics2D. экран - это только метод отображения, который генерирует графическую карту. Я пытаюсь решить эту проблему примерно через неделю – APL
Ну, в основном, это не сработает. Вам нужно будет найти другой способ кодирования графических данных, чтобы вы могли отправить его на сервер. –
Можете ли вы предложить любой способ, с помощью которого я могу сериализовать объект перед отправкой? – APL