- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Java 开发一个字典式应用程序,并且使用 Simple 框架进行序列化。它包含一个字符串数组列表,我遇到的唯一问题是 Simple 会序列化/反序列化这些字符串并将任何空值更改为 null。我从this question了解到您需要使用转换器。我按照该页面上的描述添加了 Sand 在他的答案中编写的类(需要进行“new AnnotationStrategy()”更改),现在这就是我遇到问题的主类的样子(与大量的 get/set 方法被删除):
public class Item {
@ElementList(name = "itemContents")
@Convert(SimpleXMLStringConverter.class)
private ArrayList<String> values;
public Item()
{
}
}
每当我尝试将类写入 XML 文件时,都会收到此错误:
org.simpleframework.xml.convert.ConvertException: Element annotation required for field 'values' private java.util.ArrayList main.LangComp.Item.values
at org.simpleframework.xml.convert.ConverterScanner.getConvert(ConverterScanner.java:147)
at org.simpleframework.xml.convert.ConverterScanner.getConvert(ConverterScanner.java:121)
at org.simpleframework.xml.convert.ConverterScanner.getConverter(ConverterScanner.java:100)
at org.simpleframework.xml.convert.AnnotationStrategy.write(AnnotationStrategy.java:175)
at org.simpleframework.xml.convert.AnnotationStrategy.write(AnnotationStrategy.java:155)
at org.simpleframework.xml.core.Source.setOverride(Source.java:394)
at org.simpleframework.xml.core.Factory.setOverride(Factory.java:170)
at org.simpleframework.xml.core.Composite.isOverridden(Composite.java:1387)
at org.simpleframework.xml.core.Composite.writeElement(Composite.java:1309)
at org.simpleframework.xml.core.Composite.writeUnion(Composite.java:1194)
at org.simpleframework.xml.core.Composite.writeElements(Composite.java:1165)
at org.simpleframework.xml.core.Composite.writeSection(Composite.java:1071)
at org.simpleframework.xml.core.Composite.write(Composite.java:1042)
at org.simpleframework.xml.core.Composite.write(Composite.java:1019)
at org.simpleframework.xml.core.Traverser.write(Traverser.java:236)
at org.simpleframework.xml.core.CompositeList.write(CompositeList.java:248)
at org.simpleframework.xml.core.Composite.writeElement(Composite.java:1331)
at org.simpleframework.xml.core.Composite.writeElement(Composite.java:1314)
at org.simpleframework.xml.core.Composite.writeUnion(Composite.java:1194)
at org.simpleframework.xml.core.Composite.writeElements(Composite.java:1165)
at org.simpleframework.xml.core.Composite.writeSection(Composite.java:1071)
at org.simpleframework.xml.core.Composite.write(Composite.java:1042)
at org.simpleframework.xml.core.Composite.write(Composite.java:1019)
at org.simpleframework.xml.core.Traverser.write(Traverser.java:236)
at org.simpleframework.xml.core.Traverser.write(Traverser.java:208)
at org.simpleframework.xml.core.Traverser.write(Traverser.java:186)
at org.simpleframework.xml.core.Persister.write(Persister.java:1187)
at org.simpleframework.xml.core.Persister.write(Persister.java:1169)
at org.simpleframework.xml.core.Persister.write(Persister.java:1147)
at org.simpleframework.xml.core.Persister.write(Persister.java:1266)
at org.simpleframework.xml.core.Persister.write(Persister.java:1248)
at org.simpleframework.xml.core.Persister.write(Persister.java:1229)
at org.simpleframework.xml.core.Persister.write(Persister.java:1208)
at main.IO.FileHandler.WriteXML(FileHandler.java:32)
at main.UI.MainUI.formWindowClosing(MainUI.java:108)
at main.UI.MainUI.access$000(MainUI.java:16)
at main.UI.MainUI$1.windowClosing(MainUI.java:76)
at java.awt.Window.processWindowEvent(Window.java:2045)
at javax.swing.JFrame.processWindowEvent(JFrame.java:296)
at java.awt.Window.processEvent(Window.java:2003)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
我之前能够让这个程序工作,唯一的问题是它会把空字符串变成空,这是我需要避免的。我不知道是什么原因导致了问题或如何解决它。是因为我从链接的问题中获得的转换器类适用于字符串,而不是 ArrayList,还是因为 XML 节点是字符串而不是列表而无关紧要?当它说“字段需要元素注释”时,我无法理解它想要什么注释。
最佳答案
抛出错误消息是因为我使用了@ElementList,并且此过程需要@Element。我找到了一种让它与 ArrayLists 一起工作的方法,因为我放弃了尝试让它在一个实例中工作,只是希望转换器适用于一切。我不知道这是否是一个好方法,但它确实有效。我只是按照here描述的步骤进行操作创建一个RegistryStrategy,我没有将转换器绑定(bind)到我的类(它不会接受),而是将它绑定(bind)到String.class;换句话说,序列化过程不关心它是否存储在复杂的类中,ArrayList等,如果它是一个String,那么如果它读入为null,它将被设置为“”。
关于java - 尝试更改空字符串的反序列化方式时发生 ConvertException : Element annotation required for field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9138340/
我的问题是 this one. 的一个分支 我有一个要验证的注释(比如电话注释)。我可以使用@phone 验证器来检查电话对象是否有效。我还希望能够将此验证器放在包含电话的联系信息对象上。有没有一种方
我的问题是 this one. 的一个分支 我有一个要验证的注释(比如电话注释)。我可以使用@phone 验证器来检查电话对象是否有效。我还希望能够将此验证器放在包含电话的联系信息对象上。有没有一种方
例如 class LoggingService [Inject] (protected val logger: Logger) class LoggingService @Inject (protec
你觉得你是java高手吗? 您是否深谙反射 API 的 secret ? public @interface @a {} public @interface @b {} @Mark public @i
我对 Spring 和 JUnit 非常陌生。我正在尝试为 spring 服务类运行一个简单的 JUnit 测试用例,但它失败了,我得到了这个异常。我还没有编写任何测试,但在实现之前尝试运行。使用to
对于spring和JUnit来说是非常新的东西。 我正在尝试为spring服务类运行一个简单的JUnit测试用例,但是失败了,并且出现了这个异常。我还没有编写任何测试,但是尝试在实现之前进行测试。 使
我有一个实体Test,它将从特征中获取它的属性(和基本方法): class Test { use Trait_title; } trait Trait_title{ /** *
我(当然)正在尝试使用许多我不太了解的构造来维护一个项目。在尝试弄清楚 Spring 中 AOP 使用的过程中,我遇到了带有以下注释的方法: @Around(value = "@annotation(
目前我正在编写一个注释处理器,它将生成新的源代码。该处理器与应用程序本身隔离,因为它是构建项目的一个步骤,我将整个构建系统与应用程序分开。 这就是问题开始的地方,因为我想处理在应用程序中创建的注释。我
我将 Vertx Service Gen 注释处理器与 Kotlin kapt 结合使用。 在注释处理器启动之前,我的 kapt 失败,到处都是以下异常消息: error: scoping const
我很难弄清楚如何从其实际实现类中获取对 java.lang.annotation.Annotation 的引用。 注释本身看起来像这样(来自框架): @Target({ElementType.TYPE
如何创建类似的注释 @Table(name="batch", uniqueConstraints= @UniqueConstraint(columnNames = {"compound_id"
我刚开始使用Spring Boot,我收到这个错误已经有一段时间了,不幸的是无法修复它。从那时起,我一直在谷歌上搜索,但仍然找不到我做错了什么。在我的代码下面找到:。实体。刀。主要。误差率。启动App
输出文本: Execution failed for task ':app:checkDebugDuplicateClasses'. 1 exception was raised by worker
假设我想使用宏注释来复制@specialized(Int) 之类的注释——我知道这很疯狂。像这样的东西: class expand(expanded: Any*) extends Annotation
假设我想使用宏注释来复制@specialized(Int) 之类的注释——我知道这很疯狂。像这样的东西: class expand(expanded: Any*) extends Annotation
注解处理过程中我目前正在处理一个方法的注解: @Override public boolean process(Set elements, RoundEnvironment env) { Mess
我有接口(interface)资源和几个实现它的类,例如音频、视频...此外,我创建了自定义注释MyAnnotation: @MyAnnotation(type = Audio.class) cl
我的项目包括较旧的未注释 Controller 和较新的基于注释的 Controller 。 我使用的是最新的 Spring jar (3.0.5),在我的 dispatcher-servlet.xm
我正在写一些简单的 win32 东西,我正在使用以下 wWinMain int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance
我是一名优秀的程序员,十分优秀!