java - java.io.NotSerializableException: javax.swing.GroupLayout
问题描述
我有这段代码,它抛出异常
java.io.NotSerializableException: javax.swing.GroupLayout
代码如下
package basededatosmuebleria;
import FrontEnd.VentanaIngresoMedianteArchivo;
import java.io.*;
import javax.swing.JOptionPane;
public class FileController implements Serializable {
public static void escribirObjetoPieza(String nombre, Pieza pieza){
try{
ObjectOutputStream fileOut = new ObjectOutputStream(
new FileOutputStream(nombre));
fileOut.writeObject(pieza);
fileOut.close();
}
catch (IOException e){
JOptionPane.showMessageDialog(null, e);
}
}
}
发送调用该方法的类如下...
package basededatosmuebleria;
import FrontEnd.VentanaIngresoMedianteArchivo;
import static java.lang.Double.parseDouble;
import java.util.StringTokenizer;
import java.io.*;
public class Pieza implements Serializable {
String tipo;
double costo;
VentanaIngresoMedianteArchivo comunicador = new
VentanaIngresoMedianteArchivo();
public Pieza(String tipo, double costo){
this.tipo=tipo;
this.costo=costo;
}
public Pieza(){}
public String getTipo(){
return this.tipo;
}
public double getCostoPieza(){
return this.costo;
}
public void evaluarLinea(String line) {
try{
StringTokenizer token = new StringTokenizer(line,",");
tipo=token.nextToken()
.replaceAll("PIEZA", "")
.replace("(", "")
.replaceAll("\"","");
costo=parseDouble(token.nextToken()
.replace(")",""));
Pieza pieza = new Pieza (tipo, costo);
int contador = FileController.leerContadorPiezas(tipo);
String nombreDelObjeto=
"Pieza"
+tipo
+String.valueOf(contador)
+".dat";
FileController.escribirObjetoPieza(nombreDelObjeto, pieza);
}
catch(NullPointerException e){
VentanaIngresoMedianteArchivo.cajaDeMensajes.append("No se ha ingresado un valor en el precio de la pieza");
}
catch(NumberFormatException e){
VentanaIngresoMedianteArchivo.cajaDeMensajes.append("El formato ingresado es incorrecto. no es un numero real");
}
}
}
解决方案
如果您碰巧在使用 Javax.swing 并且您一直在使用PropertyChangeSupport
来保持 Windows 同步(或其他目的)。
您可能会java.io.NotSerializableException: javax.swing.GroupLayout
在尝试序列化持有PropertyChangeSupport
. 通过更改PropertyChangeSupport
为transient private PropertyChangeSupport variableName;
,
初始化时,您可以解决此错误。
推荐阅读
- sql - 在dataTable asp .net核心中显示除Id之外的其他值
- laravel - Vue 没有收到来自 api 的所有数据
- java - 启动时启动画面动画循环
- vue.js - Vue 3 Composition API...如何替换 getElementById
- java - 如何在 Quarkus 中禁用实时重新加载?
- python - TWS API:使用 reqAccountUpdates 创建带有仓位的数据框
- python - 使用 Amazon Textract 分析 PDF 的特定页面
- reactjs - 对象是来自 userReducer 的“未知”类型
- c++ - C++Builder 中的 Android 推送通知
- mongodb - 在 Pentaho 中,我们如何将下一个 MongoDB 输入中的前一个结果值用作查询或聚合?