没有方法签名:CSVFormat.withDelimiter()适用于参数类型:[;]?

时间:2016-04-19 11:06:57

标签: java csv groovy

我想使用Apache commons CSV解析器解析CSV文件,但groovy在传递分隔符';'时抛出异常作为char,因为groovy传递了一个java.lang.Character,并且该方法需要一个原始char。 我在我的单元测试java 7中使用了groovy。

任何机构都知道如何解决这个问题?

//Create the CSVFormat object
  CSVFormat format = CSVFormat.RFC4180.withHeader().withDelimiter(';');

  //initialize the CSVParser object
  CSVParser parser = new CSVParser(new FileReader(filePath), format);


groovy.lang.MissingMethodException: No signature of method:    org.apache.commons.csv.CSVFormat.withDelimiter() is applicable for argument  types: (java.lang.String) values: [,]
 Possible solutions: withDelimiter(char), getDelimiter()
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:55)
at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:46)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at test.ca.azb.j2ee.obb3.TestPersistence.testLoadHyrCsvToHyrTable(TestPersistence.groovy:226)

1 个答案:

答案 0 :(得分:1)

实际上,Groovy正在传递String

  

groovy.lang.MissingMethodException:没有方法签名:org.apache.commonsormat.withDelimiter()适用于参数类型:(java.lang.String)...

';'是一个字符串,但您可以turn it into a character

CSVFormat format = CSVFormat.RFC4180.withHeader().withDelimiter(';' as char)

';' as char实际上会生成一个java.lang.Character,但Groovy会为您解包它以生成该方法所需的char