我正在使用eclipse对我的第一个java桌面应用程序进行编码,但是部署它时遇到了困难。我的项目使用JavaFX2和e(fx)clipse插件,后者负责生成build.xml文件。
关于APP
除其他外,该应用程序提供了一个界面,用户可以在其中创建类别并将其与标签相关联。所有修改都保存在一个文件中(数据存储为序列化对象。)并且应该在重新打开应用程序时自动加载。
问题
使用.xml文件(Ant)构建为可执行jar时,项目在创建它的文件夹中运行正常。我可以运行我的应用程序,修改数据,并在完成后保存所有内容。当我重新打开应用程序时,所有内容都会按原样加载。
但是,如果我将文件夹复制到其他地方,我将无法再保存任何数据。其他一切似乎都有效;该应用程序甚至会加载它在原始目录中时保存的数据。我认为这意味着应用程序仍然可以看到数据文件,但不能再写入它。
我做了什么
我已经读到围绕安装程序扭曲.jar可能会解决问题;然而,该应用程序的目标之一是使其尽可能便携。这意味着应该可以将它从一个目录/计算机移动到另一个目录/计算机,理想情况是以跨平台友好的方式,而无需安装它。
我尝试了各种各样的东西让它发挥作用。我已将整个项目转移到Netbeans(以生成不同的版本),我已修改了save / load方法文件路径以确保正确的文档是针对性的,我尽可能地调整了.xml文件,我甚至尝试使用javafxpackager构建项目。无论我做什么,当构建工作时,我得到相同的结果。
现在,我认为.xml文件可能仍有问题,但我很难理解如何修改它。也许问题是由数据序列化的方式引起的。我知道,当我在项目中移动时,有时保存和加载方法都无法再与数据交互。
我觉得奇怪的是,当移动项目时,加载方法仍然有效。如果问题是由更改文件路径引起的,那么为什么只有save方法停止运行?
APP文件和结构
+src
-(Main.java)
+controller
-(misc.javas)
+modelData
-(Library.java) -->the object that is serialized
+modelLogic
-(misc.javas)
+view
-(misc.javas)
+files
-(library.data) -->the file where the serialized object is saved
+lib
-(empty.empty)
那么,他能解决我的问题吗?
提前致谢。
答案 0 :(得分:0)
最后,问题相当简单。当我移动应用程序时,我总是将它放在桌面上,在我的PC的情况下,默认情况下将所有内容设置为只读(与应用程序的权限相关)。因此,该应用无法修改桌面上文件夹中的任何文件。
因此,我所要做的就是将应用程序移动到另一个目录,例如C:\ randomFolder,问题就解决了。
因此,如果有人遇到类似的问题,将应用程序移到别处可能就是解决方案。或者,获取文件夹及其内容的完全所有权也可以。
如果可能,通常最好让应用询问用户特定位置以保存其数据。