Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
g++;:找不到文件 我最近开发了一个程序,编译并运行一个java程序的C++程序,我已经基本上完成了所有的工作(至少我的知识),但是后来我注意到一些东西被打印到错误流: cdog5000@srv3:~$ java -Xmx50m -jar main2.jar Running Command: sudo g++ --static -o "/home/cdog5000/cody.out" "/home/cdog5000/cody.cpp" Err: g++: "/home/cdog5000/cody.cpp": No such file or directory Err: g++: no input files cdog5000@srv3:~$ ls -l total 4548 -rwxr-xr-x 1 cdog5000 cdog5000 1297588 Feb 3 23:11 a.out -rwxr-xr-x 1 cdog5000 cdog5000 7978 Feb 2 04:39 cody -rw-r--r-- 1 cdog5000 cdog5000 106 Feb 4 02:09 cody.cpp -rwxr-xr-x 1 cdog5000 cdog5000 1297357 Feb 4 02:09 cody.out -rw-r--r-- 1 root root 410433 Feb 4 02:48 log.txt -rwxr-xr-x 1 cdog5000 cdog5000 801088 Feb 1 05:24 main.jar -rw-r--r-- 1 cdog5000 cdog5000 804802 Feb 4 02:49 main2.jar drwxr-xr-x 3 cdog5000 cdog5000 4096 Feb 3 23:11 sandbox cdog5000@srv3:~$ sudo g++ --static -o "/home/cdog5000/cody.out" "/home/cdog5000/cody.cpp"_Java_Linux_G++ - Fatal编程技术网

g++;:找不到文件 我最近开发了一个程序,编译并运行一个java程序的C++程序,我已经基本上完成了所有的工作(至少我的知识),但是后来我注意到一些东西被打印到错误流: cdog5000@srv3:~$ java -Xmx50m -jar main2.jar Running Command: sudo g++ --static -o "/home/cdog5000/cody.out" "/home/cdog5000/cody.cpp" Err: g++: "/home/cdog5000/cody.cpp": No such file or directory Err: g++: no input files cdog5000@srv3:~$ ls -l total 4548 -rwxr-xr-x 1 cdog5000 cdog5000 1297588 Feb 3 23:11 a.out -rwxr-xr-x 1 cdog5000 cdog5000 7978 Feb 2 04:39 cody -rw-r--r-- 1 cdog5000 cdog5000 106 Feb 4 02:09 cody.cpp -rwxr-xr-x 1 cdog5000 cdog5000 1297357 Feb 4 02:09 cody.out -rw-r--r-- 1 root root 410433 Feb 4 02:48 log.txt -rwxr-xr-x 1 cdog5000 cdog5000 801088 Feb 1 05:24 main.jar -rw-r--r-- 1 cdog5000 cdog5000 804802 Feb 4 02:49 main2.jar drwxr-xr-x 3 cdog5000 cdog5000 4096 Feb 3 23:11 sandbox cdog5000@srv3:~$ sudo g++ --static -o "/home/cdog5000/cody.out" "/home/cdog5000/cody.cpp"

g++;:找不到文件 我最近开发了一个程序,编译并运行一个java程序的C++程序,我已经基本上完成了所有的工作(至少我的知识),但是后来我注意到一些东西被打印到错误流: cdog5000@srv3:~$ java -Xmx50m -jar main2.jar Running Command: sudo g++ --static -o "/home/cdog5000/cody.out" "/home/cdog5000/cody.cpp" Err: g++: "/home/cdog5000/cody.cpp": No such file or directory Err: g++: no input files cdog5000@srv3:~$ ls -l total 4548 -rwxr-xr-x 1 cdog5000 cdog5000 1297588 Feb 3 23:11 a.out -rwxr-xr-x 1 cdog5000 cdog5000 7978 Feb 2 04:39 cody -rw-r--r-- 1 cdog5000 cdog5000 106 Feb 4 02:09 cody.cpp -rwxr-xr-x 1 cdog5000 cdog5000 1297357 Feb 4 02:09 cody.out -rw-r--r-- 1 root root 410433 Feb 4 02:48 log.txt -rwxr-xr-x 1 cdog5000 cdog5000 801088 Feb 1 05:24 main.jar -rw-r--r-- 1 cdog5000 cdog5000 804802 Feb 4 02:49 main2.jar drwxr-xr-x 3 cdog5000 cdog5000 4096 Feb 3 23:11 sandbox cdog5000@srv3:~$ sudo g++ --static -o "/home/cdog5000/cody.out" "/home/cdog5000/cody.cpp",java,linux,g++,Java,Linux,G++,正如您所看到的,如果我通过SSH而不是Java代码来实现,它会工作吗 Java代码: public static Exec exec(String cmd){ Exec exec = new Exec(cmd); try { long current = System.currentTimeMillis(); Process proc = Runtime.getRuntime().exec(cmd);

正如您所看到的,如果我通过SSH而不是Java代码来实现,它会工作吗

Java代码:

 public static Exec exec(String cmd){
        Exec exec = new Exec(cmd);
        try {
            long current = System.currentTimeMillis();
            Process proc = Runtime.getRuntime().exec(cmd);
            exec.setReturnValue(proc.waitFor());
            exec.setRunTime(System.currentTimeMillis() - current);
            BufferedInputStream bos = new BufferedInputStream(proc.getInputStream());
            byte b[] = new byte[1024];
            String content = "";
            while(bos.read(b) != -1) {
                content += new String(b);
            }
            exec.setStdIn(content.split("\n"));
            content = "";
            bos = new BufferedInputStream(proc.getErrorStream());

            while(bos.read(b) != -1) {
                content += new String(b);
            }
            exec.setStdErr(content.split("\n"));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return exec;
    }

感谢您的帮助,我们非常感激

GCC不是那样说谎的-看起来文件不在那里。您确定正在向我们显示来自正确目录的输出吗

Err: g++: "/home/cdog5000/cody.cpp": No such file or directory
他正在告诉你这个问题

您有一个级别的引号太多,因此您要查找的是
“/home/cdog5000/cody.cpp”
,而不是
/home/cdog5000/cody.cpp

报告说:

更准确地说,命令字符串使用由call new StringTokenizer(命令)创建的StringTokenizer分解为标记,而无需进一步修改字符类别。然后,标记器生成的标记按相同顺序放置在新的字符串数组cmdarray中

这意味着它只在空白处拆分,它不像shell那样处理双引号

许多语言都有两个函数,一个叫做
exec
,它逐字运行命令,另一个叫做
system
,它将字符串传递给shell,在shell中拆分单词并展开通配符


我看不到Java中的
system
调用,因此我认为您必须使用
exec(String[]cmdarray)
而不是
exec(String命令)

cdog5000@srv3:~$ls-l“/home/cdog5000/cody.cpp”-rw-r--r--1 cdog5000 cdog5000 106 Feb 4 02:09/home/cdog5000/cody.cpp运行的是什么cdog5000@srv3:~$sudo g++--static-o“/home/cdog5000/cody.out”“/home/cdog5000/cody.cpp”outputNothing,问题已经解决。可能g++正在查找一个名为“/home/cdog5000/cody.out”的文件——即两端都有引号。也许试着删除引号…?太棒了,这就解决了。把它作为回复贴出来,我会给你一个被接受的答案。哦,天哪,我错过了一个被接受的答案。哦,好吧。顺便说一句,Java5+使用exec的方法是使用ProcessBuilder。