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

如何在java类中Autoit.exe文件调用

周马鲁
2023-03-14
// Label: image
driver.findElement(By.id("uploadimage")).click();
//for 1mb file uploading
Runtime.getRuntime().exec("D:\\netxploretesting\\unifytreewebautomation\\src\\test\\java\\executables\\fileupload.exe"+" "+"E:\\images\\profile.JPG");
//assertion for message display
assertTrue(driver.findElement(By.xpath("//strong[contains(text(),\"You are exceeding the size limit, it can't be more\")]")).getText().matches("You are exceeding the size limit, it can't be more than 512 KB."));
System.out.println(driver.findElement(By.xpath("//strong[contains(text(),\"You are exceeding the size limit, it can't be more\")]")).getText());
 

共有1个答案

袁英豪
2023-03-14

您可以将exe与包一起分发,并将其保存在源代码中,但这实际上是一种糟糕的做法。然而,如果你别无选择,我可以建议以下方式:

  1. exe文件放入资源文件夹
  2. 在代码中实现将文件从资源复制到文件系统中的某个位置。
  3. 从代码执行该文件
  4. 构建JAR(exe文件将作为资源放置到JAR)

下面是一个简单的例子,说明如何实现第2和第3点:

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) throws InterruptedException, IOException {

        // Copy file from resources to file system (path taken from the command line argument)

        InputStream is = Main.class.getResourceAsStream("Autoit.exe");
        File exeFile = new File(args[0]);
        FileOutputStream fos = new FileOutputStream(exeFile);
        byte bytes[] = new byte[1000];
        int k = 0;
        while((k = is.read(bytes)) != -1){
            fos.write(bytes, 0, k);
        }
        fos.close(); // Do not forget to close the outputstream, otherwise your code will be holding the file and it won't be possible to execute it

        // Below is just an example on how you can execute the file after copying
        List<String> commands = new ArrayList<String>();    //
        commands.add(args[0]);                              //  Start file with argument
        commands.add("E:\\images\\profile.JPG");                             //
        Process p = new ProcessBuilder().command(commands).start();
        InputStream i = p.getInputStream();         //
        Scanner scanner = new Scanner(i);           //
        while (scanner.hasNextLine()){              //  Print the output of the file
            System.out.println(scanner.nextLine()); //
        }                                           //
    }

}
java -jar mysuper.jar c:/Folder_To_Store_Copy_Of_Autoit/Autoit.exe
 类似资料:
  • 问题内容: 我将以下JavaScript文件“ test.js”编译为“ test.class”: 我想在简单的Java程序“ run.java”中调用已编译的JavaScript函数“ test.addNumbers(1,2)”,如下所示: 我尝试了很多方法,但是失败了。我阅读了Rhino教程,并检查了许多文章和示例,但它们仅显示了如何从命令行或源文件“ test.js”中调用JavaScrip

  • 我曾经用过 在BSF采样器中。现在我使用带有groovy的JSR223采样器,出现错误 响应消息:javax.script.ScriptException:org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败: Script2.groovy: 10:无法解析类Packages.ml.bh.security.CUplo

  • 问题内容: 我正在编写一个与.class文件一起使用的Java程序。我希望能够读取文件系统上的.class文件(使用InputStream)并确定它所在的包。该.class文件可能不在一个不错的包目录结构中,它可能位于某个随机位置。我怎样才能做到这一点? 问题答案: 阅读类文件格式文档 -或使用知道如何解析类文件的库,例如BCEL及其类。

  • 我的两门课是这样的: 和 我无法使用编译这两个文件,错误是: a、 java:4:找不到symbol symbol:B类位置:p.a类 B类B=新B(“哈哈”) ^ a.java:4:找不到符号 符号:B类 位置:p.a类 B类=新B(“哈哈”) ^ 2个错误 移除

  • 问题内容: 我在Sun上阅读了有关JAR文件的Java教程,但是仍然找不到解决我问题的方法。我需要使用一个名为jtwitter.jar的jar文件中的类,我下载了该文件并尝试执行该文件(昨天我发现可以通过双击来执行.jar文件),而Vista却给我一个错误提示:无法从[路径] /jtwitter.jar加载Main-Class Manifest属性。 编码.jar文件的人要我将其导入,但是在哪里将

  • 这是我的bash脚本(“compile_java.sh”): 这就是我尝试调用bash脚本(我使用Ubuntu): 这就是“错误”信息: 谁能给我一个提示吗?