完整编辑:是的,我觉得我所看到的明显不是针对不从事这个项目的人,所以这可能会惹恼一些人,但我将在这里重置细节。
最初:- 我的 Eclipse IDE 工作区中有一系列文本文件、图像文件和声音文件。当我从 IDE 运行应用程序时,一切都很闪亮。使用 File 和 Scanner 类(见下文)加载基于文本的文件(在此实例中为 .DAT),并且由 slick2d 加载图像和声音(见下文):
// Loading a text based file from the IDE workspace
Scanner scanner = new Scanner(new File("text/intro1.DAT"));
// Loading an image and a sound as handled by slick2d
Image background = new Image("images/backgrounds/menuBG.jpg");
Sound bgm = new Sound("sounds/music/MainMenuTheme.wav");
到目前为止,一切正常,但是......
导出:- 当我将文件导出到可运行的 jar 时,没有任何文本、声音和图像随之导出。我做了一些研究并了解到,如果库的 /lib 文件夹中包含的内容将被导出。这有两个影响:
- 这破坏了 IDE 中的所有链接。看到现在一切都存在于 ./lib/...
- 但是,由于 lib 的内容直接导出到 jar 的顶层(至少当我使用 Eclipse 和 JarSplice 这样做时),这修复了差异。至少在我试图解决的问题之前。
问题:- 查看上面的代码,文本文件夹和声音文件夹在生成的导出 jar 中位于完全相同的级别。自从他们都工作的IDE以来,那个和路径字符串没有改变。现在,在导出到可运行的 jar 之后,所有声音和图像文件都已由 slick2d 成功加载,但所有基于文本(.DAT)的文件现在在运行时都会导致 FileNotFound 异常,即使它们的访问权限尚未改变了。
显然,直接意义上的路径没有问题,因为图像和声音仍在加载,但错误仍然存在。
我以错误的方式访问文件?slick2d 如何自我管理和尝试以我的方式访问文件之间是否存在某种冲突?
希望这更清楚一点。