当前位置: 首页 > 知识库问答 >
问题:

复制文件时,JMeter Bean Shell采样器错误“…在类的java.nio.file.paths中找不到静态方法get(java.lang.String

越霖
2023-03-14
import java.text.*;
import java.nio.file.StandardCopyOption.*;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

String filename = new SimpleDateFormat("dd-MM-yyyy_hh:mm:ss").format(new Date())+".xlsx";
log.info(filename);

Path source = Paths.get("C:/dropfile/qatp/QATP_GuestRecords.xlsx");
Path target = Paths.get("C:/dropfile/qatp/"+filename);

Files.copy(source, target, REPLACE_EXISTING);

我在日志中收到的错误:

ERROR-jmeter.util.BeanShellInterpreter:调用bsh方法时出错:eval源文件:内联计算:``Import java.text.;导入java.nio.file.StandardCopyOption;导入java.io.io。..“”:类型化变量声明:方法调用中出错:在类“java.nio.file.paths”中找不到静态方法get(java.lang.String)

我一直在寻找这个问题的答案,并遇到了一个解决方案,其中的建议是:“我的猜测是问题在于它没有填充varargs参数。尝试:

Path target = Paths.get(filename, new String[0]);"
import java.text.*;
import java.nio.file.StandardCopyOption.*;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

String filename = new SimpleDateFormat("dd-MM-yyyy_hh:mm:ss").format(new Date())+".xlsx";
log.info(filename);

Path source = Paths.get("C:/dropfile/qatp/QATP_GuestRecords.xlsx", new String[0]);
Path target = Paths.get("C:/dropfile/qatp/"+filename, new String[0]);

Files.copy(source, target, REPLACE_EXISTING);

有没有人知道为什么我会碰到这个错误,以及如何绕过它?

共有1个答案

谷梁煌
2023-03-14

即使在普通的旧Java中,这也是对paths.get的误导性使用,它接受URI或字符串数组(varargs)。参见Javadoc。

在Java中,您所尝试的工作是因为静态类型允许编译器确定您传递的是单个字符串的数组。很明显BeanShell并不这样做,而且会感到困惑。在我看来,另一个答案中建议的方法并不是一个好方法:在Java中,通过连接两个字符串(第2个字符串为空,因此结果是第1个字符串,这就是您想要的),这也会使BeanShell感到困惑,因为还有另一个静态get方法需要2个参数。

如果已将路径作为单个字符串,请尝试以下操作:

Path source = new File("C:/dropfile/qatp/QATP_GuestRecords.xlsx").toPath();

或者,您可以使用paths.get,如下所示:

Path source = Paths.get("C:", "dropfile", "qatp", "QATP_GuestRecords.xlsx");

或者像这样(varargs是语法糖,帮助传递数组):

Path source = Paths.get(new String [] { "C:/dropfile/qatp/QATP_GuestRecords.xlsx" });

将path片段作为参数传递,或将整个path字符串作为单个参数传递是完全有效的,但这似乎会绊倒BeanShell,因此,最好避免在BeanShell中使用paths.get,除非您像上一个示例一样显式地传递数组。

 类似资料:
  • 我正在尝试创建一个JMeter负载测试。我需要测试获取一个示例日志文件并更改其名称。我能找到的唯一方法是在BeanShell预处理器中复制该文件,但我得到了以下错误: 我使用的代码如下:

  • 问题内容: 我正在尝试创建JMeter负载测试。我需要测试以获取示例日志文件并更改其名称。我能找到的唯一方法是在BeanShell预处理器中复制文件,但出现以下错误: 我使用的代码如下: filename,global_counter和file_counter是jmeter变量。 有人知道我为什么收到此错误吗?beanshell预处理器是否无法以我尝试使用的方式工作? 问题答案: 我的 猜测 是问

  • 问题内容: 我混淆了STATIC_ROOT和STATICFILES_DIRS 实际上,我并不是很了解STATIC_ROOT的实用程序。我认为这是我必须放置公用文件的目录。该目录用于生产,这是collectstatic将放置(收集)静态文件的目录。 STATICFILES_DIRS是我需要的。 由于我处于开发环境中,因此对我来说,解决方案是不使用STATIC_ROOT(或指定其他路径)并在STATI

  • 我得到一个错误: 错误:在类testPackage.Method1中找不到Main方法,请将Main方法定义为:public static void Main(字符串[]args)或JavaFX应用程序类必须扩展JavaFX.application.application“ 该计划是:

  • 嗨。我刚到爪哇。我正试图写一个继承程序,得到这个错误。 错误:在类myPackage.inheritage中找不到Main方法,请将Main方法定义为:public static void Main(string[]args)或JavaFX应用程序类必须扩展JavaFX.application.application

  • 我目前正在创建一个涉及flask和webpack的项目。目前flask服务器能够找到相关模板,但无法找到相关JavaScript。 我有一个webpack配置用于创建超文本标记语言文件使用webpack html插件这样: 在src目录中使用名为index.html的模板,其中包含以下内容: webpack应将其与以下javascript index.js捆绑在一起: 和print.js: app