g++:找不到文件

2024-04-20

我最近一直在开发一个程序,该程序从 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"

正如你所看到的,如果我通过 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;
    }

感谢您的帮助,非常感谢!


Err: g++: "/home/cdog5000/cody.cpp": No such file or directory

正在告诉你问题所在。

您的一级报价过多,因此您正在寻找"/home/cdog5000/cody.cpp"而不是/home/cdog5000/cody.cpp.

The Runtime.exec 文档 http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Runtime.html#exec%28java.lang.String%29 says:

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

这意味着它只在空格上分割,它不像 shell 那样处理双引号。

许多语言都有两个函数,一个称为exec它逐字运行命令,并且system它将字符串传递给 shell,在 shell 中它将分割单词并扩展通配符。

我看不到system用Java调用,所以我想你必须使用exec(String[] cmdarray)而不是exec(String command).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

g++:找不到文件 的相关文章

随机推荐

  • R:tuneRF 函数的行为不明确(randomForest 包)

    我对这句话的含义感到不舒服stepFactor的参数tuneRF http www inside r org packages cran randomForest docs tuneRF函数用于调整mtry进一步使用的参数randomFor
  • Android - 解压缩文件夹?

    我的 SD 卡上有一个 zip 文件夹 如何解压缩该文件夹 在我的应用程序代码中 我正在使用 Beginner 方法的修改版本 该方法扩展了 AsyncTask 并可以更新主线程上的观察者 逐字节压缩非常慢 应该避免 相反 更有效的方法是将
  • 将静态宽度垂直子菜单置于动态水平菜单下方

    我已经在这个问题上呆了好几个小时了 我可以找到我想要的各个组成部分 但我似乎无法将它们组合在一起 我遇到的问题是我无法让静态宽度子菜单以它们派生的 li 项目为中心 如果这些父 li 项目具有静态宽度 这应该很容易 但我想根据页面的宽度动态
  • compileSdkVersion 'Google Inc.:Google APIs:23' 和compileSdkVersion 23 之间有什么区别

    在 Gradle build 文件中 我看到一些项目使用 compileSdkVersion Google Inc Google APIs 23 有些只是使用号码 compileSdkVersion 23 两者有什么区别 后一种对于绝大多数
  • Java有using语句吗?

    Java有没有可以在hibernate中打开会话时使用的using语句 在 C 中 它类似于 using var session new Session 因此该对象超出范围并自动关闭 Java 7 推出自动资源块管理 http www in
  • 如何在 fs2 中“拆分”流?

    我想做这样的事情 def splitStream F A stream fs2 Stream F A split A gt B Stream F A Stream F B stream stream map split 但这不起作用 因为它
  • Git 分支从哪里开始以及它的长度是多少?

    我时不时地被问到 git 上的某个分支在什么提交上启动 或者是否在特定分支上创建了某个提交 分支的终点非常清楚 那就是分支标签所在的位置 但是 从哪里开始呢 简单的答案是 在我们的提交中created那个分支 但据我现在所知 这些信息在第一
  • np.linspace 和 np.arange 有什么区别?

    我一直用np arange 我最近遇到np linspace 我想知道它们之间到底有什么区别 查看他们的文档 np arange https numpy org doc 1 18 reference generated numpy aran
  • 如何从 2 个列表中确定最佳组合

    我正在寻找一种方法来使团体中的人员达到最佳组合 让我概述一下情况 假设我们有 A B C 和 D 此外 我们还有组 1 2 3 4 和 5 两者都是示例 可以更少或更多 每个人都给彼此打分 例如 A 对 B 的评分为 3 C 对 C 的评分
  • Objective-C 中的类对象和实例变量

    我很难理解这个概念 我直接引用书中的一句话 类对象还继承自层次结构中位于其上方的类 但因为它们没有实例变量 只有实例有 所以它们只继承方法 如果我错了 请纠正我 但类对象将是这样的 NSString aString NSString all
  • AWS Elasticsearch 和 CORS

    我正在试用 AWS Elasticsearch 服务 https aws amazon com elasticsearch service https aws amazon com elasticsearch service 设置非常简单
  • 根据 C++ 标准,int 变量是对象吗?

    下面您将找到 C 标准中对象的定义 介绍对象 1 http eel is c draft intro object 1 C 程序中的构造创建 销毁 引用 访问和 操纵物体 一个object由定义 6 1 创建 由新表达 8 3 4 隐式更改
  • SFSafariViewController PresentViewController 动画

    当我打电话时presentViewController mySafariViewController animated true completion nil 视图始终像导航控制器一样从右侧进行动画处理 我尝试打电话mySafariView
  • 如何在 postgresql 中更改类型并删除值[重复]

    这个问题在这里已经有答案了 我发现了如何增加价值TYPE 但我怎样才能从中删除价值呢 例如我有TYPE with enum values A B C 如何去除 C 要从枚举 enum test 中删除值 val1 您可以使用 DELETE
  • 从 Matlab 中的时钟图像获取时间 - 图像处理

    时钟 http img710 imageshack us img710 2623 circlock jpg http img710 imageshack us img710 2623 circlock jpg 我不知道如何确定时钟指针的顶部
  • iOS >> ShareKit >> 选择所需的共享服务

    我已经在我的应用程序中实现了 ShareKit 我同意它的默认工作方式 但我希望控制可供用户选择的服务 更具体地说 我不想处理默认嵌入的所有服务 而只想处理 Facebook Twitter 和 Mail 我在 ShareKit 文件中的哪
  • Git 格式补丁输出在单个文件中

    如何将命令 format patch 的输出定向到单个文件 stdout gt 文件名
  • 嵌入公共 Facebook 页面的活动源,无需强制用户登录/允许

    这与之前多次提出的问题类似 但无论我读什么 我仍然很困惑 我有一个公共 Facebook 页面 例如 White Collar 我需要将其活动源嵌入到我的 Android 应用程序中 我了解如何获取应用程序 ID 和应用程序秘密 但我不了解
  • 如何处理Junits中Maven和Intellij之间的相对路径

    我有一个带有模块的 Maven 项目 myProject pom xml myModule pom xml foo bar txt 考虑一个 JunitmyModule需要打开哪个bar txt 对于 maven basedir 是模块目录
  • g++:找不到文件

    我最近一直在开发一个程序 该程序从 Java 程序编译并运行 C 程序 我已经让一切基本正常工作 或至少据我所知 但后来我注意到一些东西被打印到错误流中 cdog5000 srv3 java Xmx50m jar main2 jar Run