Ошибка в названии из-за отсутствия сериализации, я знаю это, потому что у меня была эта ошибка раньше, и я решил ее благодаря этому источнику: https://developer.jboss.org/thread/279558
Но теперь у меня есть большая проблема с этим,во время отладки я обнаружил, что у меня есть класс «MessageProvider», который не реализует Serializable, поэтому я заставил его реализовать его, но затем ошибка сохранилась, проверив более тщательно, я обнаружил, что этот класс имеет атрибуты, имеющие тип ResourceBundle, и угадайте, чтоResourceBundle не реализует Serializable, поэтому я застрял там, потому что я не могу редактировать его, так как он из "корневого" пакета Java.
Это некоторый код класса 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
Что я пробовал безуспешно:
Как внедрить несериализуемый класс (например, java.util.ResourceBundle) с помощью 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");
, это работает.