有哪些方法可以从C#代码编译Java?

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

在此背景之后,问题是:从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调用本机代码和* apropos本机代码调用Java(尽管是以相当复杂的方式).

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

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

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

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

IDE是极其复杂的程序,即使仅仅是编程编辑器也足够复杂.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...