【发布时间】:2014-03-11 08:39:26
【问题描述】:
我正在尝试从 c# 调用 .bat 文件。 我的项目名称是 这是代码 MaestroStart,批处理文件具有相同的名称。它们都在同一个目录中。
private void button1_Click(object sender, EventArgs e)
{
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.FileName = @"C:\Program Files (x86)\mbmteks\Maestro\MaestroStart.bat";
p.StartInfo.WorkingDirectory = @"C:\Program Files (x86)\mbmteks\Maestro\MaestroStart\MaestroStart\bin\Debug";
p.Start();
//string output = p.StandardError.ReadToEnd();
string output = p.StandardOutput.ReadToEnd();
textBox2.Text = output;
p.WaitForExit();
}
但这是我得到的唯一输出: (“JAVA_HOME 不指向 JDK 或 JRE。请设置 JAVA_HOME 环境变量或为您的 IDEA 项目指定 JDK。”)。 如果使用这个语句
string output = p.StandardError.ReadToEnd();
屏幕上什么都没有。
我尝试将 Jave-Home 环境变量重置为我正在使用的所有目录,但没有任何变化。
这是批处理文件的代码:
@echo off
setlocal
Set JAVA_HOME=.\jre
if exist "%JAVA_HOME%\bin\java.exe" goto JavaFound
echo "JAVA_HOME does not point at a JDK or JRE. Either set the JAVA_HOME environment variable or specify a JDK for your IDEA project."
goto End
:JavaFound
if exist "start.jar" goto StartJarFound
echo "start.jar was not found. Check your Jetty installation or your app path."
goto End
:StartJarFound
%JAVA_HOME%\bin\java.exe -jar start.jar
:End
这是我直接运行批处理文件时的输出:
警告:系统属性和/或 JVM 参数已设置。考虑使用 --dry-run 或 --e xec 2014-03-11 13:35:51.964:INFO:oejs.Server:jetty-8.1.12.v20130726 2014-03-11 13:35:51.998:INFO:oejdp.ScanningAppProvider:部署监视器 C:\Pro gram 文件 (x86)\mbmteks\Maestro\webapps 间隔 1 2014-03-11 13:35:52.010:INFO:oejd.DeploymentManager:Deployable 添加:C:\Program 文件 (x86)\mbmteks\Maestro\webapps\ROOT log4j:WARN org.apache.log4j.DailyRollingFileAp 中没有这样的属性 [maxFileSize] 彭德。 log4j:WARN 在 org.apache.log4j.DailyRollingFil 中没有这样的属性 [maxBackupIndex] eAppender。 2014-03-11 13:36:00.540:INFO:ROOT:初始化 Spring 根 WebApplicationContext
2014-03-11 13:36:03.274:INFO:ROOT:初始化 Spring FrameworkServlet 'springDi 喷子' 2014-03-11 13:36:03.647:INFO:oejdp.ScanningAppProvider:部署监视器 C:\Pro gram 文件 (x86)\mbmteks\Maestro\contexts 间隔 1 2014-03-11 13:36:03.671:INFO:oejs.AbstractConnector:开始 SelectChannelConnect 或@0.0.0.0:9999
我的工作目录正确吗?我的意思是,它应该是我当前项目的目录??
【问题讨论】:
-
“JAVA_HOME 不指向 JDK 或 JRE”。是否安装了 JDK 或 JRE?
-
在命令行执行批处理文件得到什么输出?
-
你能告诉我们批处理文件中的代码吗?
-
C# 代码和不正确的 JAVA_HOME 设置之间没有逻辑联系。首先尝试从与尝试 .NET 应用程序相同的位置手动运行您的 bat 文件。问题出在 bat 文件或 JAVA 的 Windows 变量配置中,或者您没有正确安装 JRE!
-
这是批处理文件的代码,不是我写的。 @echo off setlocal Set JAVA_HOME=.\jre if exists "%JAVA_HOME%\bin\java.exe" goto JavaFound echo "JAVA_HOME does not point at a JDK or JRE. 设置 JAVA_HOME 环境变量或为您的 IDEA 指定 JDK项目。” goto End :JavaFound if exists "start.jar" goto StartJarFound echo "start.jar was not found. 检查您的 Jetty 安装或应用程序路径。" goto End :StartJarFound %JAVA_HOME%\bin\java.exe -jar start.jar :End
标签: c# java batch-file process java-home