有哪些方法可以从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是极其复杂的程序,即使仅仅是编程编辑器也足够复杂. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |