如何从c#编译Java
本文关键字:编译 Java | 更新日期: 2023-09-27 18:09:15
我正在尝试使用以下c#代码来使用javac编译Java:
Process p = new Process();
p.StartInfo.FileName = "javac";
Directory.CreateDirectory(Application.StartupPath + @"/TempJava");
p.StartInfo.Arguments = "-d "Application.StartupPath + @"/TempJava" + files;
p.Start();
"files"表示包含*.java
文件名称的字符串变量。
总而言之,我想创建一个新文件夹,然后把Java文件(从它们可能位于的地方)编译成TempJava中的一个类文件。
由于某些原因,代码不能工作,没有错误,没有警告,但是当我运行它并检查TempJava时,其中没有文件
仅仅因为子进程以一个可能的错误结束,并不意味着父进程必须意识到它。
检查进程退出码和标准输出流,特别是标准错误流。
这里我有2个按钮运行和编译这里是一些代码来帮助。
private void comp_Click(object sender, EventArgs e)
{
string text = "javac " + label1.Text + file + "@pause" + "@stop";
text = text.Replace("@", System.Environment.NewLine);
File.WriteAllText(label1.Text + "Compile.bat", text);
Process proc = null;
try
{
proc = new Process();
proc.StartInfo.FileName = label1.Text + "Compile.bat";
proc.StartInfo.CreateNoWindow = false;
proc.Start();
proc.WaitForExit();
}
catch
{
}
}
private void runp_Click(object sender, EventArgs e)
{
string news = file.Remove(file.Length - 5);
string text = "java " + news + "@pause";
text = text.Replace("@", System.Environment.NewLine);
File.WriteAllText(label1.Text + "Run.bat", text);
Process proc = null;
try
{
proc = new Process();
proc.StartInfo.FileName = label1.Text + "Run.bat";
proc.StartInfo.WorkingDirectory = label1.Text.Remove(label1.Text.Length - 1);
proc.StartInfo.CreateNoWindow = true;
proc.Start();
proc.WaitForExit();
}
catch
{
}
}
我所做的只是创建一个批处理并使用c#运行它。