我不确定以前是否回答了这个问题,我试着寻找我要问的那种问题,但我找不到令人满意的东西。如果有人能指出我一个类似的问题,那会有所帮助。
我要做的是将包含外部文件(如图像)的eclipse程序打包到一个文件中,而不是将jar文件和支持文件放在同一目录中。
我不确定这是否可能,但是在eclipse中是否有某种方式允许您以某种方式将外部文件与jar文件一起打包在一个可以轻松执行的简洁文件中?
编辑:
感谢ortis和ThorbjørnRavnAndersen,我想出了如何做到这一点。以下是解决问题的步骤:
首先,确保所有外部文件都在您的src文件夹中,而不是在您的bin或工作区或其他任何内容中。如果您的项目中有软件包,它们将显示为文件夹,并且必须将外部文件放入这些文件夹中以便在该软件包中使用。
对于外部文件的调用,请不要执行以下操作:
Image img = new Image("fileName");
而是这样做:
Image img = new Image(getClass().getResourceAsStream("fileName"));
同时确保“fileName”在src文件夹或包文件夹中,如果你有包。
有些观点:
- 如果使用主构造函数或函数调用之外的文件名初始化全局变量,getClass()将无效。使用:
yourClassName.class.getResourceAsStream("fileName");
- 如果您使用JavaFX Scenebuilder并且需要打包外部CSS文件,here是一个解决方案,可以帮助您在程序中加载样式表,而不是使用.fxml文件来执行此操作。< / p>
- 可以为InputStream变量分配
的结果getClass().getResourceAsStream("fileName"));
并用来代替整个混乱。
答案 0 :(得分:1)
是。您必须将所有外部文件作为输入流引用(因为您希望类加载器从jar文件中获取它们),然后使用http://launch4j.sourceforge.net/
将生成的单个jar文件包装为EXE文件