当尝试使用emma:emma运行Coverage或运行maven构建时,我得到以下内容:
java.lang.IllegalStateException:无法访问方法:无法将static final [Z field packageName.ClassName.$ jacocoData设置为[Z]
所以我在网上搜索了一下,我在EclEmma网站上找到了以下内容:
我的代码使用反射.当我用JaCoCo执行它时为什么会失败?
为了收集执行数据,JaCoCo检测被测试的类,它们为类添加了两个成员:私有静态字段$ jacocoData和私有静态方法$ jacocoInit().两个成员都标记为合成.
请更改您的代码以忽略合成成员.无论如何,这也是一种很好的做法,因为Java编译器在某些情况下也会创建合成成员.
但我在网上找不到关于如何用Emma实际忽略合成成员的任何文档.
在STS中我查看了Preferences/Java/Code Coverage,我看到一个Excludes框来放置排除项(我知道我也可以将排除项放在我的POM中).
我只是想知道需要在那里排除所有合成类.
谢谢
我试图通过SOAP传递Hashmap.我正在使用CXF wsdl2java来创建我的架构.我已经为我的HashMap创建了一个包装类,因为Hashmap本身不能通过该行传递.
然后我创建了适配器来将Hashmap变形为我的wsdl的已知类型,但是当我的wsdl被创建时,它会添加一些不需要的抽象地图.以下是代码:
这是我的HashMap包装类
@XmlRootElement(name = "testTO")
public class TestTO {
private HashMap<String, Object> mapTest;
public TestTO(){
this.mapTest = new HashMap<String, Object>();
}
@XmlJavaTypeAdapter(MapAdapter.class)
public HashMap<String, Object> getMapTest() {
return mapTest;
}
public void setMapTest(HashMap<String, Object> mapTest) {
this.mapTest = mapTest;
}
}
Run Code Online (Sandbox Code Playgroud)
这是MyMap类,其中是已知的模式类型
@XmlJavaTypeAdapter(MapAdapter.class)
public class MyMap extends HashMap<String, Object>{
public final List<Entry> entryList = new ArrayList<Entry>();
}
Run Code Online (Sandbox Code Playgroud)
这是Entry List,其中包含上面的列表:
public class Entry {
@XmlAttribute
public String key;
@XmlElements({
@XmlElement(name = "byte", type = byte.class),
@XmlElement(name = "short", type …Run Code Online (Sandbox Code Playgroud)