Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从批处理文件(C)调用Java时处理相对路径#_Java_C#_Batch File - Fatal编程技术网

从批处理文件(C)调用Java时处理相对路径#

从批处理文件(C)调用Java时处理相对路径#,java,c#,batch-file,Java,C#,Batch File,我收到了一个供应商的批处理文件。这个批处理文件运行一个Java程序,Java命令使用classpath参数中的相对路径执行。我们无法控制Java程序。当我直接执行批处理文件时,Java程序成功运行 在确认批处理文件成功执行后,我编写了一个Windows服务来执行批处理文件,因为我们首先需要查询数据库,然后将查询结果作为参数传递给该批处理文件,然后按计划运行该Windows服务 在第一次尝试执行此windows服务时,由于java命令,我从批处理文件中得到一个错误输出:找不到或加载main类。我通

我收到了一个供应商的批处理文件。这个批处理文件运行一个Java程序,Java命令使用classpath参数中的相对路径执行。我们无法控制Java程序。当我直接执行批处理文件时,Java程序成功运行

在确认批处理文件成功执行后,我编写了一个Windows服务来执行批处理文件,因为我们首先需要查询数据库,然后将查询结果作为参数传递给该批处理文件,然后按计划运行该Windows服务

在第一次尝试执行此windows服务时,由于java命令,我从批处理文件中得到一个错误输出:找不到或加载main类。我通过在java-cp选项中将相对路径更改为绝对路径来解决这个问题

问题:我解决了批处理文件中的类路径问题后,java程序执行时出错,原因与此相同:它试图从相对路径读取文件,但找不到相对路径

请记住,我无法控制Java,直接双击时批处理文件会成功执行


问题:如何从C#执行此批处理文件,以便java程序识别相对路径?在使用java命令之前,我尝试更改批处理文件中的当前工作目录,以与java程序中的相对路径对齐,但这不起作用。我还能做什么?

在执行批处理文件之前,是否尝试将Windows服务的工作目录更改为批处理文件的工作目录?
directory.SetCurrentDirectory(directory.GetParent(@“path\to\batch\file.bat”).FullName)
。另外,添加一些代码,说明如何运行批处理文件。@AluanHaddad,我将尝试一下,并可能在下周返回给您。不幸的是,我们无法在暂存中测试批处理文件,因此我必须通过prod部署过程来确定它是否有效。如果您使用
process.Start
来调用批处理文件,您也可以指定
WorkingDirectory
,这可能更接近我现在所想的
Process.Start(新的ProcessStartInfo{WorkingDirectory=Directory.GetParent(@“path\to\batch\file.bat”).FullName}
@AluanHaddad yes感谢您提供的其他信息。我正在使用进程。Start@AluanHaddad将当前工作目录更改为与C#worked中的批处理文件相同。如果您想在回答中写入您的评论,我可以接受您的回答。在执行批处理文件之前,您是否尝试将Windows服务的工作目录更改为批处理文件的工作目录?
directory.SetCurrentDirectory(directory.GetParent(@“path\to\batch\file.bat”).FullName)
。另外,添加一些代码,说明如何运行批处理文件。@AluanHaddad,我将尝试一下,并可能在下周返回给您。不幸的是,我们无法在暂存中测试批处理文件,因此我必须通过prod部署过程来确定它是否有效。如果您使用
process.Start
来调用批处理文件,您也可以指定
WorkingDirectory
,这可能更接近我现在所想的
Process.Start(新的ProcessStartInfo{WorkingDirectory=Directory.GetParent(@“path\to\batch\file.bat”).FullName}
@AluanHaddad yes感谢您提供的其他信息。我正在使用进程。Start@AluanHaddad将当前工作目录更改为与C#worked中的批处理文件相同。如果你想在回答中写下你的评论,我可以接受你的回答。