gpt4 book ai didi

c# - 从 C# 代码编译 Java 有哪些方法?

转载 作者:太空狗 更新时间:2023-10-29 20:24:40 25 4
gpt4 key购买 nike

我正在用 C# 编写多语言 IDE。现在,它作为一个功能合理的编辑器工作。但是,我现在正在努力添加编译和运行 Java 代码的能力(我知道用 C# 编写这听起来很愚蠢,但我更喜欢使用 C#,而且我需要 Java 支持学校类(class))。

在那个背景之后,问题来了:从 C# 编译 Java 代码的最佳方法是什么?现在,我正在使用 System.Diagnostics.Process 类。基本上,我调用编译器的方式与从命令行调用 javac 的方式相同。这是我当前实现的一个粗略示例:

ProcessStartInfo buildInfo = new ProcessStartInfo();
buildInfo.WorkingDirectory = Path.GetDirectoryName(sourcePath);
buildInfo.RedirectStandardOutput = true;
buildInfo.RedirectStandardError = true;
buildInfo.UseShellExecute = false;
Process buildProcess = Process.Start(buildInfo);

我重定向标准输出和错误,因为稍后应用程序会捕获它们以确定编译是否成功。有一个更好的方法吗?感觉有点马虎,我想知道我是否忽略了什么。

最佳答案

您还有其他选择。 Java 提供 JNI (Java Native Interface ) 允许 Java 调用本地代码适当的,让本地代码调用 Java(尽管以一种相当复杂的方式。)

根据您希望获得多少学习经验,您可以直接使用 JNI 或使用 jni4net 等库。一种不同的互操作方法是使用 ikvm,它是在 clr 中运行的 jvm,但我认为它对您没有用,因为它不包含编译器。

您还可以研究替代编译器,例如 gcj 或 ejc。

没有尝试编写 IDE 我不知道这些方法是否真的比直接使用命令行更好。我的直觉是,对于简单的集成,命令行更易于使用,但场景更复杂,例如具有多个组件的大型项目的增量编译可能需要更紧密的集成。

如果您计划在您键入时提供内联调试和错误突出显示等功能,您无论如何都需要更紧密的集成。

IDE 是极其复杂的程序,即使是简单的编程编辑器也足够复杂。

关于c# - 从 C# 代码编译 Java 有哪些方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14568641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com