为什么如果我从NetBeans运行java项目,它可以工作,但是jar文件deosn不能工作?

为什么如果我从NetBeans运行java项目,它可以工作,但是jar文件deosn不能工作?,java,batch-file,exec,Java,Batch File,Exec,我的问题是:为什么如果我从NetBeans运行Java项目,它工作得很好,但是如果我为同一个项目创建一个jar文件,有些函数就不工作了? 特别是,下面的代码应该执行一个bat文件(在项目本身的src文件夹中),并将视频从一个目录移动到另一个目录。 执行此操作的java代码是: String pathMoveBat = new java.io.File("src\\move.bat").getAbsolutePath(); Process move = Runtime.getRuntime().e

我的问题是:为什么如果我从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"

该过程可能会启动,但几乎会立即阻塞,除非您关心它的stderr和stdout流。检查文档

默认情况下,创建的进程没有自己的终端或服务器 安慰其所有标准I/O(即标准输入、标准输出、标准输出)操作 将重定向到父进程,在那里可以访问它们 通过使用getOutputStream()方法获得的流, getInputStream()和getErrorStream()。父进程使用这些 要向流程提供输入并从流程中获取输出的流。因为有些 本机平台仅为标准输入提供有限的缓冲区大小 和输出流,未能及时写入或读取输入流 进程的输出流可能导致进程阻塞,或者 甚至僵局


另一件事是src文件夹通常不会添加到zip中,正如其他人所说,即使是这样,您也无法仅从命令行访问其中的内容。

该过程可能会开始,但几乎会立即阻塞,除非您关心它的stderr和stdout流。检查文档

默认情况下,创建的进程没有自己的终端或服务器 安慰其所有标准I/O(即标准输入、标准输出、标准输出)操作 将重定向到父进程,在那里可以访问它们 通过使用getOutputStream()方法获得的流, getInputStream()和getErrorStream()。父进程使用这些 要向流程提供输入并从流程中获取输出的流。因为有些 本机平台仅为标准输入提供有限的缓冲区大小 和输出流,未能及时写入或读取输入流 进程的输出流可能导致进程阻塞,或者 甚至僵局


另一件事是,src文件夹通常不会添加到zip中,正如其他人所说,即使是这样,您也无法仅从命令行访问其中的内容。

Try
cd/d C:\Users\%1\Videos\LogitechWebcam
您无法从jar执行bat文件。您需要先解压缩它。请尝试
cd/d C:\Users\%1\Videos\LogitechWebcam
您无法从jar执行bat文件。你需要先把它解压缩。