微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有哪些方法可以从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是极其复杂的程序,即使仅仅是编程编辑器也足够复杂.

原文地址:https://www.jb51.cc/csharp/244512.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐