标题上的错误是因为没有序列化,我知道是因为我之前有该错误,并由于以下原因而解决了该错误:https://developer.jboss.org/thread/279558
但是现在我有一个更大的问题,在调试时我发现我有一个名为“ MessageProvider”的类,它没有实现Serializable,所以我实现了它,但是错误仍然存在,我仔细检查了一下,发现了该类具有类型为ResourceBundle的属性,并猜测什么ResourceBundle没有实现Serializable,因此卡在其中,因为它来自Java“ root”包,因此我无法对其进行编辑。
这是MessageProvider类的一些代码:
@Dependent
public class MessageProvider implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
/** The message provider. */
public static MessageProvider messageProvider = new MessageProvider();
/** The etiquetas msg. */
private ResourceBundle etiquetasMsg;
/** The sistema msg. */
private ResourceBundle sistemaMsg;
这是我在调试时遇到的错误:
Caused by: java.io.NotSerializableException: java.util.PropertyResourceBundle
09:51:12,621 ERROR [stderr] (default task-1) at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:256)
09:51:12,622 ERROR [stderr] (default task-1) at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:130)
09:51:12,622 ERROR [stderr] (default task-1) at org.jboss.marshalling.cloner.SerializingCloner.cloneFields(SerializingCloner.java:391)
09:51:12,622 ERROR [stderr] (default task-1) at org.jboss.marshalling.cloner.SerializingCloner.initSerializableClone(SerializingCloner.java:311)
09:51:12,622 ERROR [stderr] (default task-1) at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:254)
09:51:12,622 ERROR [stderr] (default task-1) at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:130)
09:51:12,623 ERROR [stderr] (default task-1) at org.jboss.marshalling.cloner.SerializingCloner.cloneFields(SerializingCloner.java:391)
09:51:12,623 ERROR [stderr] (default task-1) at org.jboss.marshalling.cloner.SerializingCloner.initSerializableClone(SerializingCloner.java:311)
09:51:12,623 ERROR [stderr] (default task-1) at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:254)
09:51:12,623 ERROR [stderr] (default task-1) at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:130)
09:51:12,623 ERROR [stderr] (default task-1) at org.jboss.as.ejb3.remote.LocalEjbReceiver.clone(LocalEjbReceiver.java:378)
09:51:12,624 ERROR [stderr] (default task-1) ... 101 more
我尝试失败的尝试:
How to inject a non-serializable class (like java.util.ResourceBundle) with Weld
我尝试对此类属性使用“瞬态”:
private transient ResourceBundle etiquetasMsg
,但没有成功,之后尝试了
@PostConstruct
@PostActivate
public void getResourceBundle() {
bundle = ResourceBundle.getBundle("/messages", locale );
}
但是它也没有用:/,如果你们需要更多详细信息来帮助我,请告诉我。
上下文: 我为REST服务进行了所有这些操作,并使用POSTMAN对其进行了测试,当验证不起作用时,我抛出了来自公司此处定义的类的异常,将其称为CompanyExceptions,该类从Exception扩展,所以该类CompanyExceptions使用MessageProvider类,而该类是使用ResourceBundle的类。
如果仅将CompanyExceptions替换为Exception,我不会从标题中得到错误。
因此,例如,如果我抛出类似“ throw new CompanyException("Failed to validate user password");
”的异常,它将给我错误,但是如果我使用throw new Exception("Failed to validate user password");
,则它可以工作。