我有一个NetBeans RCP应用程序,目前正在Windows上工作,我正在努力使Linux兼容。该应用程序还会创建文件夹和文件以及修改文件。
它在Windows上运行正常,没有任何修改,但在Ubuntu上它无法在启动时创建文件夹。我知道这是一个许可问题。
我有什么选择?
应用程序本身是否可以通过使用ProcessBuilder运行脚本来分配所需的权限?
提前致谢!
答案 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