尝试在java中执行命令时出错[重复]

2024-01-12

我正在尝试使用终端但从 java 运行 java 文件。意思是,我将使用 java 运行该命令。 我正在尝试执行命令 'cd /Users/apple/Documents/Documents/workspace/UserTesting/src ' 重定向到以下目录,然后执行命令 'ls' 列出当前目录中的所有文件

我正在使用此方法来运行 Java 文件“NewFile.java”

 try {
           String line;
           Process p = Runtime.getRuntime().exec( "cd /Users/apple/Documents/Documents/workspace/UserTesting/src" );
           Process p2 = Runtime.getRuntime().exec( "ls" );

           BufferedReader in = new BufferedReader(
                   new InputStreamReader(p2.getInputStream()) );
           while ((line = in.readLine()) != null) {
             System.out.println(line);
           }
           in.close();

     }
     catch (Exception e) {
           // ...
         }

输出

直接使用终端 -> 它给出“NewFile.java”

使用 Java 使用此方法 -> 对于给出的任何命令,它总是给出“bin”和“src”p2

这里有几个尝试

苹果-MacBook-Pro:~苹果$光盘 /用户/苹果/文档/文档/工作空间/UserTesting/src苹果-MacBook-Pro:src apple$java 新建文件5 90 35 45 150 3
Reichweite----nach blase art
3 5 35 45 90 150

苹果-MacBook-Pro:src apple$java /用户/苹果/文档/文档/工作空间/UserTesting/src/NewFile线程“main”java.lang.NoClassDefFoundError 中出现异常: /用户/苹果/文档/文档/工作空间/UserTesting/src/NewFile 引起原因:java.lang.ClassNotFoundException: .Users.apple.Documents.Documents.workspace.UserTesting.src.NewFile 位于 java.net.URLClassLoader$1.run(URLClassLoader.java:202) 在 java.security.AccessController.doPrivileged(本机方法)位于 java.net.URLClassLoader.findClass(URLClassLoader.java:190) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247)

苹果-MacBook-Pro:src apple$java /Users/apple/Documents/Documents/workspace/用户测试/src/New File.java线程“main”java.lang.NoClassDefFoundError 中出现异常: /用户/苹果/文档/文档/工作空间/UserTesting/src/NewFile/java 引起原因:java.lang.ClassNotFoundException: .Users.apple.Documents.Documents.workspace.UserTesting.src.NewFile.java 在 java.net.URLClassLoader$1.run(URLClassLoader.java:202) 处 java.security.AccessController.doPrivileged(本机方法)位于 java.net.URLClassLoader.findClass(URLClassLoader.java:190) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247) 苹果-MacBook-Pro:src apple$ 块引用


因此,您遇到的问题似乎是您不明白为什么当您以不同方式调用程序时会得到不同的结果。

这是发生的事情:Runtime.geRuntime().exec()创建一个新进程,它是父进程的子进程。每个进程都有自己的工作目录;当您派生一个新进程时,它会继承父进程的工作目录。调用cd然后将更改当前进程的工作目录(这是一个内置的 shell,但现在忽略它,我稍后会介绍它)。

所以你正在做的是这样的:

Parent

-> 创建子进程 1 -> 更改子进程 1 的工作目录

-> 创建子级 2 -> 调用“ls”

请注意,子进程 2 将继承其父进程的工作目录。它不会知道有关子进程 1 的工作目录的任何信息。因此,取决于调用此方法的进程的工作目录(在您的情况下,终端或...我不知道,您的 JDK 安装? )你会得到不同的结果。

如果你每次都想要相同的结果,你可以这样做:

Process p = Runtime.getRuntime().exec( "ls /Users/apple/Documents/Documents/workspace/UserTesting/src" );

如果您希望能够从任何地方执行您的程序,只需使用完整路径:

Process p = Runtime.getRuntime().exec( "java /Users/apple/Documents/Documents/workspace/UserTesting/NewFile" );

(当然,假设您已经使用过javac建造NewFile.class在该目录中,并且您具有执行它的正确权限。)

Re: cd,正如我之前提到的,这是一个内置于 shell 中的命令。当您使用以下命令调用命令时exec这样一来,很可能会失败。您可以通过使用以下命令读取标准错误来检查这一点getErrorStream()的方法Process.

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

尝试在java中执行命令时出错[重复] 的相关文章

随机推荐

  • iOS 上 JavaScriptCore 虚拟机的强制垃圾回收

    有没有办法强制 iOS 或 Mac OS JavaScriptCore VM 垃圾收集器运行 我只需要它来测试内存泄漏 所以私有 API 就可以了 使用 JSBase h 中的以下函数 function JSGarbageCollect a
  • 哪些 Knockout.js 绑定是“双向”的?

    Knockout js 拥有双向绑定 并且实例展示 http knockoutjs com examples helloWorld html如何value绑定 当应用于文本输入时 更新视图模型 但是 我尝试更新其他绑定 例如text 发现视
  • Python二进制文件读取问题

    我正在尝试在 Python 中读取一个二进制文件 代表 Matlab 中的矩阵 但我在读取文件并将字节转换为正确的值时遇到问题 二进制文件由一系列 4 字节数字组成 前两个数字分别是行数和列数 我的朋友给了我一个他编写的 Matlab 函数
  • 为什么返回 Java 对象引用比返回原语慢得多

    我们正在开发一个延迟敏感的应用程序 并且一直在对各种方法进行微基准测试 使用jmh http openjdk java net projects code tools jmh 在对查找方法进行微基准测试并对结果感到满意后 我实现了最终版本
  • 如何在Azure Function App中禁用只读模式?

    我从 Azure 门户创建一个新的 Function App v2 然后 我借助 Azure Functions Core Tools v2 3 在本地计算机上启动一个新应用程序 并将其发布到门户上的新应用程序 func init func
  • 如何使用 PHP 从多列中选择最小值

    我有一个包含以下内容的表 6xx 8xx 9xx 11xx 12xx 1 0 01 0 002 0 004 0 001 0 025 2 0 025 0 125 0 002 0 01 0 011 我想找到该列中的最小值 使该列变为绿色 例如
  • 从整数创建 LocalDate 对象

    如果我已经有一个日期的月份 日期和年份作为整数 那么使用它们创建一个日期的最佳方法是什么 LocalDate目的 我找到了这个帖子字符串到本地日期 https stackoverflow com questions 8746084 stri
  • 在 Android 上访问高 fps 相机

    有些手机官方支持高 fps 录制 例如 Galaxy S5 和 S6 我尝试了两者 两者都可以使用默认相机应用程序录制高 fps 视频 60 甚至 120 fps 或者在 S6 上使用 Gear VR 的 直通相机 功能 但是 当您通过标准
  • 防止 PyQt 消除槽中发生的异常

    据我所知 如果 PyQt 下的插槽中发生异常 异常会打印到屏幕上 但不会冒泡 这在我的测试策略中产生了一个问题 因为如果某个槽中发生异常 我将不会看到测试失败 这是一个例子 import sys from PyQt4 import QtGu
  • 使用背景图像作为项目符号对齐中心列表项

    我已经尝试解决这个问题一个小时了 但找不到解决方案 我想要的是一个居中列表 背景图像为 刻度 我要这个 正常工作 除了点与列表左侧对齐之外ul 1140px 宽 而不是列表项的左侧li这是居中的 你可以使用CSS before伪类 ul l
  • 获取给定 DN 的 NT 样式域\用户

    我有 Active Directory 中用户的 DN 我想从中获取 NT 样式 域 用户 sAMAccountname AD 属性为我提供了用户部分 但是域呢 Thanks 您可以通过获取用户 DN 的最后部分 DC domain DC
  • 如何设置每 10 次触发 LLDB 断点?

    要调试高频计时器或传感器的值 配置一个仅每 x 次触发的断点会很有用 实现这一目标的最佳方法是什么 我在 Xcode 中尝试了 停止前忽略 x 次 选项 但这仅适用于第一次 我可以使用 LLDB 命令重置此计数器吗 您可以随时使用以下命令重
  • 子窗体定位如 StatusBar

    我有一个带有菜单栏和状态栏的 MDIForm 当我创建一个子窗体并将其定位为 Align alBottom 时 该窗体会离开屏幕区域 并且主窗体滚动条被激活 如何将子窗体定位在状态栏上方 对于没有父级负责显示它的控件 对齐和锚点并不能真正按
  • Swift - 在面部识别运行后,使用 Apple 登录始终会导致“注册未完成”

    我首先按照本教程使用 Firebase 设置 使用 Apple 登录 https medium com swift products sign in with apple with firebase authentication xcode
  • 针对动态变量的 If 语句[重复]

    这个问题在这里已经有答案了 我正在尝试做类似以下的事情 New Variable Name state name Value True if state name eq True Write Host Pass else Write Hos
  • css和xhtml中的每个元素和属性、属性是否有必要使用小写?

    4 2 元素和属性名称必须小写 XHTML 文档的所有 HTML 元素和属性名称必须使用小写 这种差异是必要的 因为 XML 区分大小写 例如 和 是不同的标签 来源 http www w3 org TR 2002 REC xhtml1 2
  • 多个 selectInput 值会产生意外的 dplyr (postgres) 行为

    我有一个可爱的闪亮应用程序 它接受 selectInput 值 查询 postgres 数据库 并输出一个图表 这是一个简单的界面 但由于 dplyr 数据库连接 很难在这里重现 今天我将第一个 selectInput 值更改为 multi
  • Laravel 表单请求数组验证自定义规则

    我想创建一个表单请求验证 但不知道如何操作 我有一个表格
  • 如何使用excel vba获取href属性

    我想检索的 href 属性 h3 html页面的标签 我能够获取innerText 但我不知道如何访问href属性 有几个 h3 文档中的标签 但目前我只需要第一个 剩下的我稍后再处理 这是我到目前为止得到的代码 Sub Scrap Dim
  • 尝试在java中执行命令时出错[重复]

    这个问题在这里已经有答案了 我正在尝试使用终端但从 java 运行 java 文件 意思是 我将使用 java 运行该命令 我正在尝试执行命令 cd Users apple Documents Documents workspace Use