加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 08:41:37 所属栏目:百科 来源:网络整理
导读:我正在用C#编写一个多语言IDE.现在,它作为一个功能合理的编辑器.但是,我现在正在努力添加编译和运行 Java代码的能力(我知道在C#中编写这个代码听起来很愚蠢,但我更喜欢使用C#,我需要Java支持学校课程). 在此背景之后,问题是:从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是极其复杂的程序,即使仅仅是编程编辑器也足够复杂.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读