2010-04-01 75 views
1

我在使用Windows 2008服务器时遇到了一个相当不好的问题。我们有一个使用本地服务用户作为服务运行的Java应用程序。问题是这个用户没有权限读/写指定的java tmp目录(由系统指定)。这意味着每次应用程序尝试创建一个tmp文件时都会抛出IOException。在Windows 2008服务上使用java服务的Tmp问题

有没有什么办法让需要访问tmp目录作为服务运行没有一个Java应用程序:

  • 创建一个新用户专为purspose
  • 指定一个新的tmp目录(你将有清理自己)
  • 回答

    0

    是否有一个原因,你不能给'NT AUTHORITY \ LocalService'帐户权限写入到Java的默认临时目录?

    +0

    即使这样做,对于安装您的软件的用户来说,这似乎是一个恼人的步骤。这是问题java使用无效的java.io.tmpdir或tmp目录上的操作系统权限问题? – jnorris 2010-09-25 03:18:27

    +0

    @jnorris的确。在Windows LocalService帐户下作为服务运行时有特定的限制,包括阻止大多数出站网络呼叫......但如果将java.io.tmpdir设置为网络驱动器,这将非常不寻常。所以我同意,它可能会得到一个不好的价值,并且可以/应该直接在命令行上设置(如@crowne所示)。 – ewall 2010-09-28 00:08:44

    0

    http://www.rgagnon.com/javadetails/java-0484.html

    用于存放临时文件的目录的位置由属性java.io.tmpdir定义。
    默认值可以用来启动JVM的命令行来改变:

    java -Djava.io.tmpdir=C:\mydir myClass 
    

    ,或者在Windows上,可以将环境变量TMP设置为不同的值。