How do I include external JARs in my own Project JAR

有些话、适合烂在心里 提交于 2019-12-04 01:13:29
coder623

If you use Eclipse, You can extract all included files into one runnable jar like this:

  1. Right click on your project name from Package Explorer and select Export.
  2. In Export screen, select Java -> Runnable JAR file and Next.
  3. Fill in the Runnable JAR File Spec screen and Finish.

You can choose whether to package dependency jars as individual jar files or extract them into the generated JAR.

You could use something like One-JAR to package your Java application together with its dependency into a single executable Jar file (One-JAR uses a custom classloader to make JARs nesting possible).

You have to expand the library jars into the same place where your compiled classes go, then make a jar from that. Depending on how your build process is set up, there may be multiple ways to achieve this. It's not rocket science - a jar is just a zip archive with a META-INF directory at the root level.

Keeping JAR separate is better as it is easy to upgrade only the specific JARs to its new versions without touching any other configuration. As of your issue of having to copy each file to same location as of your JAR, you can always use Java CLASSPATH and include any JAR to your application's class path.

A JAR is not itself capable of nesting other JARs, as you discovered.

Traditionally, one would distribute a ZIP archive or other installer that would unwind the application JAR (yours) as well as any support JARs in the appropriate location for classpath access. Frequently, then, the application was invoked through a script that invoked the primary JAR and created a classpath that listed the support JARs.

As other posters have noted, you have some options to create a super-JAR if that's what you want.

You can use Maven + assembly plugin (http://maven.apache.org/plugins/maven-assembly-plugin/)

BTW, probably that's not the easiest way, if you did not work with maven.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!