Java:从JAR

时间:2016-12-19 21:25:12

标签: java eclipse javafx jar fxml

我有一个Java / JavaFX项目,我使用样式表。

来自样式表的图片将按如下方式加载:

#pane {
-fx-background-image:url('../packagename/image.jpg');
 }

当我从Eclipse或Scenebuilder编译并运行它时,它加载正常。但是,从cmd(java -jar project.jar)运行我的jar文件时,它会将文件名添加到路径中,并将其更改为:

project.jar/packagename/image.jpg

并且显然未能加载它。我如何获得正确的路径,或者从某种方式jar生成的路径中省略jar? jar文件位于包文件夹中,此处标有packagename

2 个答案:

答案 0 :(得分:0)

将所有图像添加到源文件夹。既然你说你正在使用Eclipse,只需右键单击你的项目 - >新的源文件夹。将其命名为res。将所有图片复制并粘贴到那里。

答案 1 :(得分:0)

假设" packageName"是一个来自jar文件根目录的路径,它显然会失败。路径上的../前缀将导致您的相对位置将升至其父目录,并在该目录的../之后搜索该部分。

在eclipse中,父目录可能是项目目录,而在.jar文件中,jar文件本身会给出您描述的结果。修复将是使用源目录(在" buildpath"在eclipse中配置)。这些源路径的结构取决于您,但常见的结构如下:

Root (either the eclipse project folder, or the .jar file
   | src
   |   | main
   |      | java // usually here goes all the code
   |      | resources  // and here goes all the resources the code needs.

同样,以上并不要求使java项目完美,尽管这是常见的做法。

可取的另一个修复方法是根本不使用../,但我不确定。它可能只是一个.jar文件修复。