`
prowl
  • 浏览: 80676 次
  • 性别: Icon_minigender_1
  • 来自: 艾泽拉斯
社区版块
存档分类
最新评论

sun, kick your ass!

    博客分类:
  • j2se
阅读更多
先来看一下ProcessBuilder类这段DOC

 * <blockquote><pre>
 * Process p = new ProcessBuilder("myCommand", "myArg").start();
 * </pre></blockquote>
 *
 * <p>Here is an example that starts a process with a modified working
 * directory and environment:
 *
 * <blockquote><pre>
 * ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
 * Map&lt;String, String&gt; env = pb.environment();
 * env.put("VAR1", "myValue");
 * env.remove("OTHERVAR");
 * env.put("VAR2", env.get("VAR1") + "suffix");
 * pb.directory(new File("myDir"));
 * Process p = pb.start();
 * </pre></blockquote>
 *
 * <p>To start a process with an explicit set of environment
 * variables, first call {@link java.util.Map#clear() Map.clear()}
 * before adding environment variables.
 *
 * @since 1.5
 */

public final class ProcessBuilder
{


按这个例子改完之后怎么运行都报错:

Exception in thread "main" java.io.IOException: Cannot run program "ffmpeg.exe": CreateProcess error=2
	at java.lang.ProcessBuilder.start(Unknown Source)


再看一下环境变量:

new ProcessBuilder().environment()


path根本没有改变!

google发现了这篇文章:

http://weblog.dangertree.net/2007/04/13/changing-path-and-environment-in-java-processbuilder/

引用

The first and most important issue is this: Changes to the Path environment variable are not reflected until a new process is created and running. Here is an example of how this can bite you in the ass:
ProcessBuilder pb =
    new ProcessBuilder(”myExe.exe”, “arg1″, “arg2″);
Map env = pb.environment();

// watch out here! this could be “PATH” or “path”
// Windows doesn’t care, but Java will
String path = env.get(”Path”);
env.set(”Path”, path + File.pathSeparator
    + “path\to\the\executable”);

pb.start(); 


1.You have an executable file that you want to run with ProcessBuilder that is not on your path.
2.You assume that you can write the previous code in order to temporarily add the exe’s path to the process’s environment before executing it.
3.You always get an error=2 back from the ProcessBuilder because it cannot find the file.

This is because the changes you made to the new process environment are not reflected until the process is actually running. In other words, Java does not change the path until it attempts to execute the command you have told it to execute. It will never find an executable file that is not on the previous system path even if you change the “Path” environment variable in the ProcessBuilder before you call the “start()” method.



浪费了小半个下午的时间!

分享到:
评论

相关推荐

    kickass.to]big.hero.6.2014.1080p.bluray.x264.sparks.torrent

    kickass.to]big.hero.6.2014.1080p.bluray.x264.sparks.torre

    Kickass种子搜索「Kickass torrent search」-crx插件

    通过选择文本来搜索torrent的方式 此扩展名使您可以选择页面上的文本,右键单击它,然后在Kickass种子文件中搜索该文本。 支持语言:English

    PyPI 官网下载 | kickass-get-0.2.3.tar.gz

    标题中的"PyPI 官网下载 | kickass-get-0.2.3.tar.gz"指出,这个资源是在Python Package Index (PyPI)官方网站上获取的一个软件包,名为`kickass-get`,版本号为0.2.3。PyPI是Python开发者发布自己编写的模块或工具...

    电脑数据恢复工具 Kickass Undelete v1.5.2

    【电脑数据恢复工具 Kickass Undelete v1.5.2】是一款强大的文件恢复软件,专为用户设计,用于检索意外删除的文件。在日常使用电脑时,由于误操作、系统故障或病毒感染等原因,文件可能会被错误地删除,而这款工具...

    Kickass Undelete:Windows的免费开放源文件恢复工具。-开源

    Kickass Undelete是Windows的免费,功能齐全的文件恢复工具。 不小心删除了文件? 从不畏惧; 数据可能仍在驱动器上,并且可以恢复。 Kickass Undelete会在硬盘,闪存驱动器或SD卡上找到所有已删除的文件,并允许您...

    kat-searcher:在 Kickass 中搜索通用种子

    它使用 kickass 搜索引擎寻找种子,选择种子数较多(最少 100)的经过验证的种子。 搜索引擎非常好,但也非常准确。 例如:“美国爸爸!” 不会返回任何东西。 主要是因为大多数 torrent 文件都删除了所有奇怪的...

    AutoTorrentCrawler:Torrent爬虫程序从kickass.io获得一点洪流,然后启动uTorrent自动下载

    AutoTorrentCrawler Torrent爬虫程序从kickass.io获得一点洪流,然后启动uTorrent自动下载###关于在这个项目中,我编写了一个Scrapy爬虫,该爬虫使用kickass.io的get bit torrent并启动uTorrent来自动下载任何...

    kickassparser:弃用-KickAss备份解析器(http

    KickAss备份解析器 此类允许您下载和解析每日和每小时的KickAss torrent数据库备份。 更新KickAssTorrent已更改其TOS现在您需要填写访问其备份的请求,因此该类已被弃用。 演示版 $ kickass = new KickAss (); $ ...

    Python库 | kickass-get-0.1.1.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:kickass-get-0.1.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    KAT UI - Kickass种子特别版「KAT UI - Kickass Torrents Special」-crx插件

    改进了KickassTorrents(kat)的用户界面。 改进了KickassTorrents(kat)的用户界面。 这个扩展: - 突出显示最近上传的种子; - 自动隐藏标签云。 建议@ http://git.io/vTsDX ...支持语言:English

    themeweaver:使用设计标记在浏览器中创建kick-ass IDE主题!

    主题编织者Themeweaver是一个Web应用程序,使用设计令牌创建IDE和语法突出显示主题。关于该项目使用许多开源项目。 它是使用Create-React-App构建的。贡献去吧。 1个人在空闲时间做这是一件愚蠢的事情,因为他们觉得...

    电影名称翻译和Kickass搜索「Movie name translator and Kickass Search」-crx插件

    只要选择任何网站的电影名称,然后点击按钮,这个插件将自动打开一个新的标签,并在Kickass.org中搜索电影。如果电影名称包含中文,则使用豆瓣api将其翻译成英文,然后在kickass.org中搜索。 请让我知道,如果你有...

    Kickass torrent search-crx插件

    "Kickass torrent search-crx插件"是一款专为英语用户设计的浏览器扩展程序,它提供了一种高效且便捷的方式,帮助用户在Kickass torrents网站上搜索种子文件。这款插件的核心功能是允许用户直接从网页内容中选取文本...

    KAT UI - Kickass Torrents Special-crx插件

    语言:English 改进了KickassTorrents(kat)的用户界面。 改进了KickassTorrents(kat)的用户界面。 此扩展名:-突出显示最近上传的种子; -自动隐藏标签云。 建议@ http://git.io/vTsDX海盗湾UI-...

    vscode-kickass-c64:使用Kick汇编器进行C64编码的Visual Studio Code扩展

    VSCode KickAss(C64) Visual Studio Code语言支持使用进行C64开发。 这受软件包的启发,该软件包由的全能编码。 这就是复制.tmLanguage文件的位置。 此外,通过非常鼓舞 ,通过由感谢你们俩! 像是1988年的代码!...

    RedirectBot:kickass http重定向生成器-开源

    RedirectBot是一款开源软件,专为了解决网站管理员和SEO专业人士面临的一个常见问题——处理Google爬虫错误。这个工具主要用于将Google爬虫错误CSV文件高效地转换成.htaccess重定向规则,帮助用户解决网页URL的迁移...

    Movie name translator and Kickass Search-crx插件

    只需在任何网站上选择电影名称,然后单击按钮,此插件将自动打开一个新标签并在Kickass.org中搜索电影。 如果电影名称包含中文,它将使用Douban api将名称翻译成英语,然后在kickass.org中搜索。 如果您有任何令人...

    Kickassanime - Kickass anime - 9anime.city-crx插件

    Kickass动漫寻找可以观看各种内容的动漫网站,Kickass动漫是理想的去处。 在这里,您会发现各种动漫,包括喜剧,体育,科幻,戏剧等。 您可以免费观看网站上所有类型的动漫。 此外,您还可以根据观看时获得的经验对...

    go-kickass:Go Kickass 是事实上的标准 Go 包的集成,可让您快速引导一个坚如磐石的 Web 应用程序

    去劲爆Go Kickass 是事实上的标准 Go 包的集成,可让您快速引导一个坚如磐石的 Web 应用程序。背景这个想法是每次你需要启动一个新的 Web 项目时,你都可以分叉这个存储库。 当我在 2014 年底开始学习 Go back 时,...

    KickassAPI:另一个节点kickass api

    【标题】"KickassAPI: 另一个节点kickass api" 在IT行业中,"KickassAPI"是一个提及到的特定项目或服务,它提供了一种访问kickass资源的接口,通常指的是 kickass torrent(简称KAT)网站的替代API。KAT是一个知名...

Global site tag (gtag.js) - Google Analytics