首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    java调用外部应用程序

    ffmpeg -i input.mp4 output.avi 在java中调用外部应用一般都会使用 Runtime.getRuntime().exec(); 以前其实也使用过,但是没有过深入的研究,在使用是发现也会有各种无法预料的问题出现...=2, 系统找不到指定的文件。...by: java.io.IOException: CreateProcess error=2, 系统找不到指定的文件。...回过头来看看,刚的exec方法,主要是三个参数: 命令以及参数 start dir;explore dir等 运行环境,解析${} 工作目录,按照我的理解应该相当于cmd中cd到的目录进行执行程序 那到底是什么原因导致无法找到...最后其实在ffmpeg命令前添加 cmd /c 即可,但是百度cmd /c 主要的作用是在执行脚本时保持关闭当前窗口。具体是什么原因导致这样的差别而引起程序运行的怪异现象?

    3.6K70

    Java魔法堂:调用外部程序

    认识java.lang.Runtime#exec方法 作用:用于调用外部程序,并重定向外部程序的标准输入、标准输出和标准错误到缓冲池。功能就是和windows的“运行”一样。 ?...dir.txt"}); File workdir 用于设置当前工作目录,譬如我们需要执行位于D:\tools下的echo.exe程序,那么可以这样调用Process proc = r.exec("echo.exec...Windows下调用系统命令,像dir等命令是由cmd解析器解释执行的,因此若直接写"dir"则会被认为在当前工作目录下有一个"dir.exe"文件,那么当然会执行失败;在Linux下调用ls等是同样道理...另外,缓冲池的容量是一定的,因此若外部程序在运行过程中不断向缓冲池输出内容,当缓冲池填满,那么外部程序将暂停运行直到缓冲池有空位可接收外部程序的输出内容为止。...(采用xcopy命令复制大量文件时将会出现该问题) 解决办法就是当前的Java程序不断读取缓冲池的内容,从而为腾出缓冲池的空间。

    1.6K10

    Process类详解

    每个进程生成器ProcessBuilder对象管理这些进程属性: 命令 是一个字符串列表,它表示要调用的可执行外部程序文件及其参数(如果有)。 环境 是从变量 到值 的依赖于系统的映射。...Runtime.exec() 可接受一个单独的字符串,这个字符串是通过空格来分隔可执行命令程序和参数的;也可以接受字符串数组参数/list。...创建的子进程没有自己的终端或控制台。...因此,在调用这样的进程时,必须为其提供输入。 一个外部进程的输出可能会耗尽该进程输出流与错误流的缓冲区。当发生这种情况时,Java 程序可能会阻塞外部进程,同时阻碍Java程序与外部程序的继续运行。...,此时就可以用Runtime.getRuntime().exec()来调用,他会生成一个新的进程去运行调用的程序,waitFor()方法也有很明显的弊端,因为java程序给进程的输出流分配的缓冲区是很小的

    1.6K20

    java Runtime.exec()执行shellcmd命令:常见的几种陷阱与一种完善实现

    Runtime.getRuntime().exec()执行JVM之外的程序:常见的几种陷阱前言日常java开发中,有时需要通过java运行其它应用功程序,比如shell命令等。...jdk的Runtime类提供了这样的方法。首先来看Runtime类的文档, 从文档中可以看出,每个java程序只会有一个Runtime实例,显然这是一个单例模式。...而且不同版本windows系统上,运行改命令的方式也不一样。对这宗情况,需要根据系统版本进行适当区分。...参数当做命令行本质上来讲,Runtime.exec()的command参数只是一个可运行的命令或者脚本,并不等效于Shell解器或者Cmd.exe,如果你想进行输入输出重定向,pipeline等操作,则必须通过程序来实现...例如,下面的例子Process process = runtime.exec("java -version > a.txt");这样并不会产出a.txt文件。

    67510

    Java魔法堂:找外援的利器——Runtime.exec详解

    方法重载: exec(String command) ,调用外部程序,入参command为外部可执行程序的启动路径或命令。...exec(String[] cmdArray) ,调用外部程序,入参cmdArray的元素将组合成为一条完整的外部可执行程序的启动路径或命令。...实例 —— 在当前目录执行dir命令,并将结果保存到c:\dir.txt文本文件中:   前提:假设当前用户的家目录为c:\user\fsjohnhuang   c:\user\fsjohnhuang下的目录结构...Runtime.exec() 不是cmd或shell环境,因此无法直接调用dir等命令。若要调用命令行下的命令,请参考第2节的实例。   2.  ...(采用xcopy命令复制大量文件时将会出现该问题)    解决办法就是当前的Java程序不断读取缓冲池的内容,从而为腾出缓冲池的空间。

    1.7K100

    java 执行shell命令及日志收集避坑指南

    走过路过不要错过 点击蓝字关注我们 有时候我们需要调用系统命令执行一些东西,可能是为了方便,也可能是没有办法必须要调用。...所以,不要随便调用系统命令是个不错的实践。     2. 调用系统命令是硬件相关的调用;       java语言的思想是一次编写,到处使用。...一个shell进程的调用,可能是一个比较耗时的操作,此时应该是只要任何进度,就应该汇报出来,从而避免外部看起来一直没有响应,从而无法判定是死掉了还是在运行中。...shell命令 * * @param baseShellDir 运行命令所在目录(先切换到该目录后再运行命令) * @param cmd 命令数组 * @param...主要使用 ProcessBuilder 完成了shell的调用;     2. 支持读取进程的所有输出信息,且在必要的时候,支持使用单独的文件进行接收输出日志;     3.

    2.7K10

    JAVA安全之Groovy命令注入刨析

    运行结果如下所示: 加载方式2 除去上面的方式之外我们还可以通过调用GroovyShell的evaluate方法进行执行 备注:这里的从本地加载的情况,当我们可以编辑Groovy文件或者通过上传Groovy...,它可以用于动态加载和编译Groovy类,同时也可以从字符串、文件或其他资源中加载Groovy代码并将其编译为Java字节码,随后可以在Java程序中使用这些类 字符串类 下面是一则从字符串中提取加载Groovy...: @Grab注解命令执行 基本介绍 @Grab注解是Groovy中一个非常强大的功能,它允许你在运行时动态地引入和下载依赖的库,这个注解使得Groovy脚本可以轻松地引用外部库,而不需要手动管理类路径或构建系统...().exec("calc");}catch(Exceptione){}}} 编译程序并使用python启动一个HTTP服务托管对应的JAR包文件 "C:\Program Files\Java\jdk1.8.0..."\test\poc\0"并将poc-0.jar文件丢进去 随后在根目录中启动HTTP服务进行托管 Step 2:构造GroovyTest.groovy文件 this.class.classLoader.parseClass

    17410

    java:如何让程序按要求自行重启?

    /密码/smtp信息,公用的ftp账号信息,甚至jdbc的连接串信息等,统一放在某个位置(共享的网络存储目录、redis缓存、database、zookeeper、远程service中均可),这样管理起来比较方便...场景2:写程序嘛,有隐藏的bug在所难免,绝对零bug的程序还是很罕见的,如果随着程序运行时间的不断增加,程序性能越来越差或假死,需要重启一下,通常需要远程连撞到linux,敲命令kill进程,再重启java...所以,程序应该由单独的进程监听并接收特定的指令,而不影响用户正常关闭程序,思路:  程序启动时,生成一个唯一的uuid(或其它标识,只要保证全局唯一就行),然后向zookeeper注册一个临时节点。 ...比如: /app/uuid-1 这样监控中心,只要扫描/app下有多少临时节点,就知道当前运行了哪些应用。 ...答案:java可以获取 jps -l 的输出,知道当前所有的java进程,这样就可以知道指定的应用有没有启动。

    2.7K50

    java:如何让程序按要求自行重启?

    /密码/smtp信息,公用的ftp账号信息,甚至jdbc的连接串信息等,统一放在某个位置(共享的网络存储目录、redis缓存、database、zookeeper、远程service中均可),这样管理起来比较方便...场景2:写程序嘛,有隐藏的bug在所难免,绝对零bug的程序还是很罕见的,如果随着程序运行时间的不断增加,程序性能越来越差或假死,需要重启一下,通常需要远程连撞到linux,敲命令kill进程,再重启java...所以,程序应该由单独的进程监听并接收特定的指令,而不影响用户正常关闭程序,思路:  程序启动时,生成一个唯一的uuid(或其它标识,只要保证全局唯一就行),然后向zookeeper注册一个临时节点。 ...比如: /app/uuid-1 这样监控中心,只要扫描/app下有多少临时节点,就知道当前运行了哪些应用。 ...答案:java可以获取 jps -l 的输出,知道当前所有的java进程,这样就可以知道指定的应用有没有启动。

    1.4K50

    Java程序员的日常 —— 多进程开发IO阻塞问题

    Runtime.getRuntime().exec("xxxx")” 需求:“启动以后能看到输出消息不!” 开发:“OK!”...Process process = null; try { process = Runtime.getRuntime().exec("ipconfig /all"); } catch (IOException...遇到的问题 由于运行的程序比较复杂,有可能出现错误输出。这时就不好保证是错误输出还是标准输出哪个先到。但是上面的程序中,使用了同步的方式输出子进程的消息,结果就导致了子进程阻塞。...环境变量是独立的,因此可以被修改,但是不会影响其他的进程。 directory 工作目录,如果返回的是Null,说明当前目录使用的是系统变量user.dir所在的目录。...样例中修改了工作目录以及环境变量,并且把标准错误和标准输出合并输出到日志文件中: ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1

    1.4K50

    Ubuntu上部署JobConverter + Ibreoffice环境

    和原文档字体是有差异的,是因为系统上没有我们需要的字体,所以我们要安装字体 查看现有字体 fc-list 打开目录 cd /usr/share/ 我们会看到fonts和fontconfig目录 添加字体...,并汇总生成fonts.scale文件, 输入命令: apt install xfonts-utils 然后执行ttmkfdir命令即可: mkfontdir 最后一步就是修改字体配置文件了,首先通过编辑器打开配置文件...运行命令形式) /** * 利用libreOffice将office文档转换成pdf * @param inputFile 目标文件地址 * @param pdfFile...().exec(command);// exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实例。...WPS文件无论转为doc或docx都无法转换 图片类型为嵌入型时部分转换图片丢失

    1.5K20

    Java调用Python的错误

    error 错误就是我的程序太多了,程序命名混乱,导致执行了不该执行的程序,而我以为它跑通了。...只可以这样使用: Runtime.getRuntime().exec(“python D:\studentdb.py 12345678 666666”); 这样是可以把学号和密码传入Python...之前也有注意到这个方法,但是由于考虑到它的复杂性,和Runtime.getRuntime().exec()方法的简单性,就没有往这里想,毕竟程序员是最懒的。.../site-packages下,最后将jython文件夹重新打包(注意:打包时不要直接对jython文件夹打包,只打包jython根目录下的所有文件),并改后缀为.jar,配置到java的工程目录中(构建路径...现在最蠢的解决办法有两种: 重写Python3程序为Python2 后台将获得的学号密码生成为CSV文件保存到本地,再直接执行Python程序。

    1.8K20
    领券