Ubuntu上Java应用程序的权限

时间:2011-04-07 19:49:37

标签: java netbeans permissions rcp

我有一个NetBeans RCP应用程序,目前正在Windows上工作,我正在努力使Linux兼容。该应用程序还会创建文件夹和文件以及修改文件。

它在Windows上运行正常,没有任何修改,但在Ubuntu上它无法在启动时创建文件夹。我知道这是一个许可问题。

我有什么选择?

应用程序本身是否可以通过使用ProcessBuilder运行脚本来分配所需的权限?

提前致谢!

2 个答案:

答案 0 :(得分:0)

这一切都取决于您在Ubuntu上运行进程时的身份,以及您尝试创建的文件夹的路径。此用户是否有权在该目录中创建文件夹?你在写什么类型的数据到磁盘?您是否可以使用面向用户的平台中立机制,如Java Preferences或者可能:

System.getProperty("user.home") -要么- System.getProperty("java.io.tmpdir")

答案 1 :(得分:0)

您需要在安装过程中创建所需的文件夹,或将IO限制为您有权访问的文件夹(用户主页和临时文件夹)。请注意,在Linux上有标准位置,应放置许多文件夹,管理员会对不遵循这些标准的应用程序不满。

您能告诉您出于何种目的需要哪些文件/文件夹?

看起来问题的原因是Windows和Linux之间路径分隔符的差异。在linux上你应该使用普通的斜杠。该错误提到了路径:

/home/javier\marauroa.trace.db

由于\不是路径分隔符,而是转义字符,它试图在文件夹/ home中创建一个没有权限的文件。

路径应该是:

/home/javier/marauroa.trace.db

您可能需要考虑将您的应用文件放在名为.yourappname的子文件夹中,以便它变为

/home/javier/.yourappname/marauroa.trace.db

这是许多unix应用程序所做的事情,并将其隐藏在普通文件列表中。要获取运行应用程序的系统的路径分隔符,可以使用以下静态字段:

java.io.File.seperator