0

我目前正在编写一个依赖于 LWJGL 的程序。将库添加到我的项目很容易,但是我无法将我的项目导出为独立的 JAR,用户只需双击即可获得成品。

我尝试过的:

  • 文件 -> 项目结构... -> 模块 -> 依赖项选项卡 -> 添加 -> 罐子或目录 ->(在此处插入本地人的路径) -> 对话框中的选项“类”。-> 选中“导出”下的框

期望的结果:一个可运行的 JAR,不依赖于命令行来正确打开。我的项目中包含的其他 JAR 和目录很好,但如果可能的话,我希望 IntelliJ 将它们与我的项目一起自动导出,这样我就不必手动将所需的文件拖到输出目录中并制作脚本使用正确的本地人运行 JAR。


我对 IntelliJ 非常陌生,来自 Eclipse(尽管我也从未在 Eclipse 中这样做过),并且我仍在掌握程序使用的新(对我而言)术语。我确信有一个非常简单的解决方案我只是忽略了。先感谢您。

4

3 回答 3

1

我能够通过使用 JarSplice 制作一个包含本地程序的 Windows EXE 来解决这个问题。

于 2013-09-21T14:27:03.710 回答
1

我也使用 IntelliJ,我也遇到过类似的问题。如果您将本地人放入您附近的某个文件夹中,请在public static void main方法开始时使用以下内容:

System.setProperty("org.lwjgl.librarypath", PATH_TO_LIBS);

请注意,您可能必须在前面System.getProperty("user.dir")添加PATH_TO_LIBS,我不确定。

附录:您说您希望使用您的 jar 自动创建任何其他文件?查看 IntelliJ 的工件。转到项目设置,选择工件,然后使用加号按钮添加一个。一旦你添加了一个工件,你就可以在旁边弄乱文件结构,添加其他文件夹(例如 natives 文件夹或资源文件夹)。完成后,您可以单击 Build>Artifacts,它会自动为您打包它们,并将它们放在一个目录中(您可以在 Artifact 窗口中指定)。

于 2013-09-25T00:02:15.443 回答
0

I don't know what IntelliJ is so I'm not sure how helpful this will be, but I did do something like this with LWJGL a couple of years ago.

LWJGL depends on native libraries, and the operating system depends on loading those from real native files. You can't load them from inside a jar. So, you can put them in the jar, but you'll have to write some code (which runs before you try to call any LWJGL stuff) which will extract the needed native(s) from the jar at run time and save them in the system temporary directory (or wherever) then load them with System.load.

Then you have to remove/comment out the normal library loading code from org.lwjgl.Sys (the functions doLoadLibrary and loadLibrary). That should do it.

Edit: A similar question is here: How to make a JAR file that includes DLL files?

于 2013-09-21T13:44:58.427 回答