【问题标题】:java.io.File.plus() is applicable for arguments types: (java.lang.String) value: [\] in Ready APIjava.io.File.plus() 适用于参数类型:(java.lang.String) value: [\] in Ready API
【发布时间】:2018-09-22 04:48:50
【问题描述】:

我有以下 Groovy 脚本,我正在尝试获取目录名和文件名:

File dir = new File("C://Users//avidCoder//Project")
log.info dir //Fetching the directory path
String fileName = "Demo_Data" + ".json"
log.info fileName //Fetching the file name

String fullpath = dir + "\\" + fileName
log.info fullpath //Fetching the full path gives error

但是当我运行它时,我得到了以下异常:

“java.io.File.plus() 适用于参数类型”

为什么创建fullpath变量会抛出这个异常?

【问题讨论】:

  • 它工作正常。至少我可以从您的问题中理解的代码。你只是在那里添加字符串。
  • 其实我正在使用 Ready API 工具。好像有问题
  • 我在 Ready API 中收到此错误 - “groovy.lang.MissingMethodException:没有方法签名:java.io.File.plus() 适用于参数类型:(java.lang.String ) values: [] 可能的解决方案:list(), list(java.io.FilenameFilter), split(groovy.lang.Closure), use([Ljava.lang.Object;), is(java.lang.Object),等待()“

标签: java file groovy ready-api


【解决方案1】:

因为dirFile 类型,而File 没有plus(String) 方法。

你可能想要

String fullpath = dir.path + "\\" + fileName

如果您想在 Windows 以外的其他平台上使用它:

String fullpath = dir.path + File.separator + fileName

您还可以查看Path.join(),在an other answer 中进行了解释

【讨论】:

    【解决方案2】:

    当您使用+ 运算符时,Groovy 获取表达式的左侧部分并尝试调用方法.plus(parameter),其中parameter 是表达式的右侧部分。意思是表达

    dir + "\\" + fileName
    

    相当于:

    (dir.plus("\\")).plus(filename)
    

    您的示例中的dir 变量是File,因此编译器会尝试找到如下方法:

    File.plus(String str)
    

    并且该方法不存在,您会得到:

    Caught: groovy.lang.MissingMethodException: No signature of method: java.io.File.plus() is applicable for argument types: (java.lang.String) values: [\]
    

    解决方案

    如果你想构建一个像String fullpath = dir + "\\" + fileName 这样的字符串,你必须得到一个dir 变量的字符串表示,例如dir.path 返回一个代表文件完整路径的字符串:

    String fullpath = dir.path + "\\" + fileName
    

    【讨论】:

    • 感谢您解释问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    相关资源
    最近更新 更多