当前位置: 首页 > 面试题库 >

Linux上的Java Runtime.exec()参数

松新
2023-03-14
问题内容

好的,这就是问题所在:我有3个类MyClass1和MyClass2和ExecClass。我转到命令提示符并执行以下操作:

$java MyClass1 -exec "java MyClass2 arg1 arg2"

完美地运作。现在在ExecClass中,我有以下几行:

Runtime.getRuntime().exec("java MyClass1 -exec \"java MyClass2 arg1 arg2\"");

问题是,如果您打印第二个字符串,它与第一个字符串完全相同,但是当我的ExecClass运行它时,MyClass1会抱怨:无法识别的参数arg1失败。经过一些调试后,我发现在第一种情况下,当我直接从终端调用时,引号中的整个字符串是1个参数(arg
[1]),在第二种情况下,arg.length =
5且它基本上将它们分割了…出于某种未知的原因。我只需要知道一个工作环境,如果有人知道,也可以运行我的Runtime.exec()即可。PS:在我的Windows计算机上,这种问题仅在linux上不会发生。这是一个Ubuntu破坏内核:2.6.32-279.14.1.el6.x86_64。


问题答案:

Runtime.execsystem()其他语言中的类似函数不同,它不会调用外壳程序来解析命令(并且双引号字符串是外壳程序功能)。

要以所需方式拆分字符串,请使用接受String数组的Runtime.exec:

Runtime.getRuntime().exec(new String[] { "java", "MyClass1", "-exec", "java MyClass2 arg1 arg2"});


 类似资料:
  • 问题内容: 我有一个简单的Python脚本,可以接收用户名和密码作为参数,但是我的密码包含两个感叹号。当我像这样调用脚本时 我之前输入的命令将替换感叹号: 我可以使用反斜杠()避开感叹号,但密码会更改。 是否有解决方案,如何在不更改密码的情况下转义感叹号? 问题答案: 您应该能够简单地在外壳中用单引号引起来。

  • 问题内容: 我是新手,已经开始学习Python,但是我有一些我听不懂的问题, PYTHONPATH(在Ubuntu上)究竟是什么?是文件夹吗? 是Ubuntu上默认提供的Python,还是必须显式安装? 所有模块所在的文件夹在哪里(我有很多文件夹称为)? 如果我希望在编程时能使用一个新模块(例如pyopengl),应该在哪里介绍下载的文件夹中的所有文件夹? 回到PYTHONPATH问题,如何配置P

  • 问题内容: 我正在尝试开始在Linux上使用ncurses开发程序。我什至无法获取Hello World示例进行编译。这是代码: 当我尝试编译时,我得到: 对于那些所谓的函数。 我通过apt-get以及下载源代码并进行编译,安装等安装了ncurses。 我已经试过这两个和。 到底是怎么回事? 问题答案: 链接时是否使用了该选项? 包括头文件可以使代码进行编译(因为编译器从文件中知道函数调用的样子)

  • 问题内容: 如果以0偏移量使用,则在排他模式下使用时和使用时有什么区别? 我之所以问是因为我正在阅读基于平台有条件地在这两个函数中的任何一个中编译的代码,所以我想了解原因。 问题答案: 和之间的实际区别在于语义(关于关闭和传递的行为),在NFS和其他共享文件系统上的适用性以及咨询锁是否对其他使用锁的进程可见。 您正在使用的库仅具有根据当前平台选择所需语义的逻辑。 如果语义(行为优于描述符传递,派生

  • 问题内容: 我正在使用Mono和Monodevelop在Linux(KUbuntu)中进行项目。我想使用System.Speech库,在Windows 7上的Unity中,Monodevelop完全可以使用该库。在过去的几个小时里,我一直在网上寻找很多东西,据我所知,System.Speech WAS已添加到单核细胞增多症。 我已经更新了所有mono,显示了4.0.2(最新版本),而Monodev

  • 1.5. RedHat Linux 上的 Python 如果您想在像 Linux 一样的 UNIX 兼容的操作系统上安装二进制包很容易。 预编译好的二进制包对大多数 Linux 发行版是可用的。或者您可以通过源码进行编译。 在 http://www.python.org/ftp/python/ 选择列出的最新的版本号, 然后选择 其中的rpms/ 目录下载最新的 Python RPM 。 使用 r