gpt4 book ai didi

java - jar 中图像和可执行文件的路径

转载 作者:太空宇宙 更新时间:2023-11-04 06:39:31 26 4
gpt4 key购买 nike

我已经在 eclipse 中创建了一个 java 程序,现在准备将其导出为 jar。我的程序使用图像文件和可执行文件。当在 eclipse 中测试我的程序时,我使用完整路径引用了这些文件,这显然不能用于 jar。因此,我将它们更改如下:

public static final String DRIVERLOC = "./resources/IEDriverServer.exe";
//some other code
File file = new File(DRIVERLOC);
System.setProperty("webdriver.ie.driver", file.getAbsolutePath());

File pic = new File("./images/Open16.gif");
openButton = new JButton("Select the Text File", createImageIcon(pic.getAbsolutePath()));

我将图像以及资源和图像目录与 jar 放在同一目录中。现在,由于某种原因,当我运行 jar 时,IEDriverServer 工作正常,但图像不起作用,错误是它找不到图像。我很困惑,因为我似乎无法区分。我还使用了“images/Open16.gif”,但也不起作用。为什么其中一个有效,而另一个却不起作用?解决这个问题最简单的方法是什么?

最佳答案

我们对 Selenium 驱动程序做了完全相同的事情。您需要做的就是从 jar 中取出可执行文件并将其放在 Windows 可以运行它的地方。如果您尝试在 Windows 资源管理器中打开 jar/zip,然后双击 jar/zip 中的 .exe,Windows 会将文件解压到临时目录,然后运行它。所以做同样的事情:

import org.apache.commons.io.IOUtils;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class TestClass {
public static void main (String[] args) throws IOException {
InputStream exeInputStream = TestClass.class.getClassLoader().getResourceAsStream("resources/IEDriverServer.exe");
File tempFile = new File("./temp/IEDriverServer.exe");

OutputStream exeOutputStream = new FileOutputStream(tempFile);
IOUtils.copy(exeInputStream, exeOutputStream);

// ./temp/IEDriverServer.exe will be a usable file now.
System.setProperty("webdriver.ie.driver", tempFile.getAbsolutePath());
}
}

假设您保存了 jar 并使其默认运行此 main 函数。运行 C:\code\> java -jar TestClass.jar 将从 C:\code 目录运行 jar。它将在 C:\code\temp\IEDriverServer.exe 中创建可执行文件

关于java - jar 中图像和可执行文件的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24874541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com