运行c++;从Java问题 我需要从java编译并运行C++程序。我正在使用
进程a=Runtime.getRuntime().exec(“g++-g function.cpp-o function”); 进程b=Runtime.getRuntime().exec(“./function”) 问题是,我从C++程序中得到的输出是不正确的,但是如果我自己在命令行中编译并运行它,它就可以正常工作。问题是Java,我不知道为什么 非常感谢运行c++;从Java问题 我需要从java编译并运行C++程序。我正在使用,java,c++,command-line,Java,C++,Command Line,进程a=Runtime.getRuntime().exec(“g++-g function.cpp-o function”); 进程b=Runtime.getRuntime().exec(“./function”) 问题是,我从C++程序中得到的输出是不正确的,但是如果我自己在命令行中编译并运行它,它就可以正常工作。问题是Java,我不知道为什么 非常感谢 Al,是否在运行流程B之前等待流程A完成?是否在运行流程B之前等待流程A完成?“输出…不正确”无助于任何人诊断您的问题。您肯定应该给出您期望
Al,是否在运行流程B之前等待流程A完成?是否在运行流程B之前等待流程A完成?“输出…不正确”无助于任何人诊断您的问题。您肯定应该给出您期望的输出,以及您从Java看到的输出。假设您的程序很小,您也应该发布它的源代码(因为这毕竟是关于编译过程的) 顺便问一下,当您导航到Java程序的工作方向,找到它生成的
函数
可执行文件并从命令行调用它时,会发生什么?现在输出正确吗?这个问题的答案将让您知道问题是在编译步骤还是在执行步骤
如果是执行,我会冒险猜测环境(envvars、PATH等),但如果没有更多信息,很难判断
此外,与所有涉及过程的问题一样,请看一看。看起来你正在至少其中一个(不消耗输出的普通),这可能导致程序在普通C++代码上工作,但在较大的代码库上死锁。
您也根本没有检查编译步骤的输出(返回值或stdout/stderr流),因此您不知道编译是否成功,如果不成功,您从编译器获得了什么(有用的)错误消息。“输出…不正确”无助于任何人诊断您的问题。您肯定应该给出您期望的输出,以及您从Java看到的输出。假设您的程序很小,您也应该发布它的源代码(因为这毕竟是关于编译过程的)
顺便问一下,当您导航到Java程序的工作方向,找到它生成的函数
可执行文件并从命令行调用它时,会发生什么?现在输出正确吗?这个问题的答案将让您知道问题是在编译步骤还是在执行步骤
如果是执行,我会冒险猜测环境(envvars、PATH等),但如果没有更多信息,很难判断
此外,与所有涉及过程的问题一样,请看一看。看起来你正在至少其中一个(不消耗输出的普通),这可能导致程序在普通C++代码上工作,但在较大的代码库上死锁。
您也根本没有检查编译步骤的输出(返回值或stdout/stderr流),因此您不知道编译是否成功,如果不成功,您从编译器中得到了什么(有用的)错误消息。我在这里看到了一个明确且可能存在的问题。确切的问题是Runtime.exec()不会等待进程完成。因此,您需要添加
a.waitFor();
在给b打电话之前
可能的问题是,根据您调用此应用程序的方式,当前工作目录可能不在您认为的位置。因此function.cpp可能不存在 我在这里看到了一个确定的和一个可能的问题。确切的问题是Runtime.exec()不会等待进程完成。因此,您需要添加
a.waitFor();
在给b打电话之前
可能的问题是,根据您调用此应用程序的方式,当前工作目录可能不在您认为的位置。因此function.cpp可能不存在 “输出不正确”表示什么,确切地说,“输出不正确”表示什么,确切地说?如果答案解决了您的问题,请单击左侧的复选框“接受”最好的答案。如果答案解决了您的问题,请单击左侧的复选框“接受”最好的答案。