我的问题是:为什么我从NetBeans运行项目Java,它运行得很好,但如果我创建同一项目的jar文件,某些功能不起作用? 特别是,下面的代码应该执行bat文件(在项目本身的src文件夹中)并将视频从目录移动到另一个目录。 执行此操作的java代码是:
String pathMoveBat = new java.io.File("src\\move.bat").getAbsolutePath();
Process move = Runtime.getRuntime().exec(pathMoveBat+" "+username+" "+dateFormat.format(currentDate)+" "+i+"");
,文件move.bat是
cd C:\Users\%1\Videos\LogitechWebcam
FORFILES /M *.wmv /C "cmd /c move @file C:\Users\%1\Desktop\%2\videos\video%3"
答案 0 :(得分:0)
该过程可能会开始,但几乎会立即阻塞,除非您关心它的 stderr 和 stdout 流。检查文档。
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Process.html
<块引用>默认情况下,创建的进程没有自己的终端或 安慰。它的所有标准 I/O(即 stdin、stdout、stderr)操作 将被重定向到父进程,在那里可以访问它们 通过使用 getOutputStream() 方法获得的流, getInputStream() 和 getErrorStream()。父进程使用这些 流向流程提供输入并从流程中获取输出。因为有些 本机平台仅为标准输入提供有限的缓冲区大小 和输出流,未能及时写入输入流或读取 进程的输出流可能会导致进程阻塞,或者 甚至死锁。
另一件事是 src 文件夹通常不会添加到 zip 中,正如其他人所说,即使添加了,您也无法仅从命令行访问它的内容。