当前位置: 首页 > 知识库问答 >
问题:

PHP exec("javacfile.java>>log.txt")不会将编译错误写入文件

姜胤
2023-03-14

我正在编写一个小的php脚本,它使用exec函数编译java代码。我希望编译失败,并将编译问题写入日志文件,但当我对其进行cat时,日志文件不包含任何内容。如何将编译错误消息放入日志文件中?

<?php 

 ini_set('display_startup_errors', 1);
 ini_set('display_errors', 'On');
 error_reporting(E_ALL);

// When it doesn't compile, it doesn't write error to log.txt 
$class = 'class runrunrun
    {
        public static void main (String args[])
        {
            System.out.println("Hello world!"); 
            FAIL NOW!!
        } 

    }'; 

    $myfile = fopen("runrunrun.java", "w+") or die("Unable to open file!");
    fwrite($myfile, $class);
    fclose($myfile);

    exec("javac runrunrun.java >> log.txt", $foo, $compileFlag);
        if ($compileFlag != 0) {
            echo "COMPILE ERROR\n";
        }

?>

提前谢谢

编辑:我正试图在AFS服务器上运行这个。以下是lsb_发布的输出。我希望这能让事情明朗一点

LSB版本::base-4.0-amd64: base-4.0-noarch: core-4.0-amd64: core-4.0-noarch: graic-4.0-amd64: graic-4.0-noarch: printing-4.0-amd64: printing-4.0-noarch

分销商ID:Scientific

描述:Scientific Linux 6.8版(碳)

发行:6.8

代号:碳

默认shell是BASH

共有1个答案

孙承
2023-03-14

您需要使用2将STDERR指向一个文件

javac runrunrun.java >> log.txt 2>> error.log

也许对你有用。

或者,如另一条评论中所述,将所有输出重定向到同一个文件2

javac runrunrun.java 2>&1 log.txt

另见本答复。

 类似资料:
  • 问题内容: 遇到一个错误地使用 而不是 在其代码中的人,它没有显示为编译错误。 是因为 是相同的 ? 问题答案: 没有编译错误,因为它是有效的(尽管相当无用) 一元运算符 ,其使用方式与以下方式相同: Java语言规范中的相关部分是Unary Plus运算符+(第15.15.3节) 。它指定调用一元运算会导致操作数的一元数值提升(第5.6.1节)。这意味着: * 如果操作数是编译时类型的,,,或,

  • 我正在使用pyspark,在向S3写入数据时遇到了问题,但从S3读取数据并不是问题。 这是我的代码: 这是错误: 有什么问题?

  • 我正在尝试使用writefile,但由于某种原因,它在./events文件夹之外使用。 我尝试使用fs, xp.js试图在同一个文件夹中写入level.json。

  • 我写了下面提到的一个简单的java程序。不幸的是,编译错误发生了。 在编译过程中,在命令提示符下会显示以下内容: c:\Java 它对我的任何程序都不起作用,即使是这个简单的程序也不行!这是为什么? 编辑: 现在我有: 而且它不起作用。为什么不起作用? 它说的和以前一样。 你对Java所说的。lang.String[]有效,但为什么不能呢?为什么我以前不需要穿上这些?

  • 我尝试在编译器中运行此代码,它给出了“circle”的输出: 我没有将打印功能设置为虚拟,但它仍然具有相同的效果。这有什么原因吗?

  • 问题内容: 所以代码很简单: Calls.json file.ts 生成的javascript是正确的,并且在运行节点js服务器时,控制台日志json.SERVER会按需打印’{请求:{一个:‘1’}}’。 但是,打字稿编译器(commonjs)并不特别喜欢这种情况,并抛出:“找不到模块’../static/calls.json’”。 当然,我尝试编写.d.ts文件,如下所示: 这显然会引发:“环