如何在Java程序中更改当前工作目录?我能找到的关于这个问题的一切声称你根本做不到,但我不相信那是真的.
我有一段代码,它使用来自通常启动的目录的硬编码相对文件路径打开文件,我只是希望能够在不同的Java程序中使用该代码,而无需从内部启动它一个特定的目录.看起来你应该只能调用System.setProperty( "user.dir", "/path/to/dir" )
,但据我所知,调用该行只是默默地失败并且什么都不做.
我会理解,如果Java不允许你这样做,如果它不是因为它允许你获得当前的工作目录,甚至允许你使用相对文件路径打开文件....
假设我想为一个匹配以字符'Z'开头的字符串的函数创建一个特例.通过执行以下操作,我可以使用模式匹配轻松完成:
myfunc ('Z' : restOfString) = -- do something special
myfunc s = -- do the default case here
Run Code Online (Sandbox Code Playgroud)
但是如果我想匹配具有更长前缀的字符串呢?假设我想要一个以"烤面包机"开头的字符串的特殊情况.编写匹配此类字符串的模式的最佳方法是什么?
我编写了一个Erlang模块,其中并未直接调用所有内部函数.相反,有几个函数看起来像这样:
weird_func(Cmd, Args) ->
?MODULE:Cmd(Args).
Run Code Online (Sandbox Code Playgroud)
这是一个简化的例子,但你明白了.Erlang编译器会发出有关未使用函数的警告,实际上它们实际上是使用的,而不是直接使用.有没有办法抑制这些警告?理想情况下,我不想压制所有这些警告,而是我想告诉Erlang编译器将一些特定函数视为特殊情况.
我最近遇到了一个错误,整个Erlang应用程序死了,产生一条如下所示的日志消息:
=INFO REPORT==== 11-Jun-2010::11:07:25 ===
application: myapp
exited: shutdown
type: temporary
Run Code Online (Sandbox Code Playgroud)
我不知道是什么触发了这个关机,但我遇到的真正问题是它没有重启.相反,现在空的Erlang VM只是坐在那里什么都不做.
现在,根据我所做的研究,看起来还有其他"开始类型"你可以提供一个应用程序:'transient'和'permanent'.
如果我在应用程序中启动Supervisor ,我可以告诉它将特定进程设置为瞬态或永久性,并且它将自动为我重新启动它.但是,根据文档,如果我将应用程序设置为瞬态或永久性的,它不会在它死亡时重新启动它,而是它也会杀死所有其他应用程序.
我真正想做的是以某种方式告诉Erlang VM应该始终运行特定的应用程序,如果它发生故障,请重新启动它.这可能吗?
(我不是在谈论在我的应用程序之上实现一个主管,因为那是一个问题22:如果我的主管进程崩溃怎么办?我正在寻找某种API或设置,我可以使用它来使用Erlang监视器和为我重启我的申请.)
谢谢!