繁体   English   中英

从Java运行C ++问题

[英]Running c++ from Java problem

我需要从Java编译并运行c ++程序。 我在用

处理a = Runtime.getRuntime()。exec(“ g ++ -g function.cpp -o function”); 进程b = Runtime.getRuntime()。exec(“ ./function”);

问题是我从c ++程序获得的输出不正确,但是如果我自己在命令行中编译并运行它,则效果很好。 问题是Java,我不知道为什么。

非常感谢

我在这里看到一个明确的问题和一个可能的问题。 该明确的问题是,的Runtime.exec() 等待过程来完成。 因此,您需要添加

a.waitFor();

致电之前b。

可能的问题是,取决于您如何调用此应用程序,当前的工作目录可能不在您认为的位置。 因此function.cpp可能不存在。

您是否正在等待进程A完成,然后再运行进程B?

“输出...不正确”不会帮助任何人诊断您的问题。 您绝对应该提供期望的输出以及从Java中看到的输出。 假设您的程序很小,那么您也应该发布该程序的源代码(因为这毕竟与编译过程有关)。

顺便说一句,当您导航到Java程序的工作方向,找到它生成的可执行文件并从命令行调用该function会发生什么? 现在输出正确吗? 答案将使您知道问题是在编译步骤还是在执行步骤。

如果执行,我会冒险猜测环境(envvars,PATH等)之类的东西,但是如果没有更多信息,这很难说。

另外,与涉及Process es的所有问题一样,请看一下这些常见的陷阱 看来您正在制作其中至少一个(不消耗输出的常见之一),这可能会导致您的程序在琐碎的C ++代码上工作,但在更大的代码库上陷入僵局。

您也根本不检查编译步骤的输出(返回值或stdout / stderr流),因此您不知道编译是否成功-如果不成功,您将得到什么(有用的)错误消息从编译器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM