如何从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时,其中没有文件

如何从c#编译Java

仅仅因为子进程以一个可能的错误结束,并不意味着父进程必须意识到它。

检查进程退出码和标准输出流,特别是标准错误流。

这里我有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#运行它。