我有一个脚本,生成2个新的文件作为令牌,并使用它们来验证执行任务。它还有两个额外的文件,它从一个文本文件中读取信息并将其插入到另一个JSON文件中。
所以我有...
- 2个令牌文件
- 1个脚本文件
- 1个文本文件
- 1个json文件
在我的本地程序中,我可以执行,脚本将运行良好。它将搜索我的资源文件夹,找到这4个文件,并使用它们来执行任务没有问题。然而,当我在后端外部服务器上部署这个程序进行测试时,程序报告说它在资源目录中找不到这些文件。
据我所知,当它编译成jar文件时,我让它搜索的目录就不再有效了
目录将更改为...
- /部署
- --数据
- --project.jar
我找到资源文件的代码如下:
private final String scriptPath = "/src/main/resources/";
public void runScript4() {
String script = "hello.bat";
try {
String result = null;
Process awk = new ProcessBuilder( scriptPath + script).start();
awk.waitFor();
System.out.println("Script executing...");
BufferedReader in =
new BufferedReader(new InputStreamReader(awk.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
result += inputLine;
}
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
在本地,它将转到src/main/resources以获取脚本并使用同一目录中的其他文件,但当它被部署并构建到jar中时,这就不起作用了。
在联机部署时执行此脚本的最佳方法是什么?有没有一种方法可以获得一个脚本来在jar中创建新文件以及编辑现有的txt/JSON文件?还是推荐另一种方法?
1条答案
按热度按时间eqqqjvef1#
"/src/main/resources/";
-为什么在部署应用程序时会有一个“src”目录?根本没有文件***(jar文件中有一个条目。那不是文件!).Windows不能查看jar文件内部(如果可以的话,那就太奇怪了!).
因此,您需要回答两个独立的问题:
你必须这样做(基本上,“从你自己的jar中提取bat文件,就像一个迷你安装程序”)-因为要么这样,要么编写你自己的all-java cmd.exe变体,知道如何读取和执行bat文件。因为windows的
cmd.exe
不知道如何在jar(jar?jar是什么?- 为什么windows会知道那是什么?)这两种方法都很容易合并: