0

我想将我的 Java 程序作为 JAR 文件分发。我的程序需要 Oracle JDBC 驱动程序,该驱动程序也以 JAR 文件的形式提供。但该java -jar命令只接受一个 JAR 文件。因此我必须合并这两个 JAR 文件。这可以很容易地完成,但我可以这样做吗?我是否可以将我的程序作为包含 Oracle JDBC JAR 文件内容的 JAR 文件分发?

4

2 回答 2

5

但是 java -jar 命令只接受一个 JAR 文件。

这是不正确的。您的 JAR 文件可以包含一个带有 Class-Path: 条目的清单,该条目可以命名 Oracle .jar 文件。

于 2012-07-10T09:48:14.667 回答
1

是的,您可以将 Oracle JDBC 驱动程序打包到您的 jar 文件中,只要您不修改 jar 文件或其中的任何文件。在某些库中,还需要将许可证文件包含在您的分发中 -您需要阅读相应 jar 文件的许可证详细信息。通用 Oracle 分发许可条款可在此处找到http://www.oracle.com/technetwork/licenses/distribution-license-152002.html

关于java -jar您问题的一部分,请参阅以下说明:

要启动可执行的 jar 文件,我们使用命令java -jar executable.jar

JVM 会查看 jar 文件的清单并执行 main 类的 main 方法 - 您在 jar 文件中指定。应用程序的任何依赖项都可以通过类路径设置来满足——我们不需要在启动应用程序时指定所有依赖项 jar 文件。

类路径设置有多种方式:

  • 设置系统类路径(在 Windowsset CLASSPATH=app1.jar;app2.jar;driver.jar;和 Unix/Linux 上export CLASSPATH=app1.jar:app2.jar:app3.jar)。当您可以控制系统变量并且它是受控环境时,此方法很有用,此方法不适用于将应用程序分发给客户端
  • 在启动应用程序时提及类路径。这可以通过使用-classpathjava comman 的选项来完成 - 例如,java -classpath app1.jar;app2.jar;driver.jar -jar executable.jar此方法对于快速测试很有用,并且如果要引用的 jar 文件的数量较少
  • 指定 mainfest 类路径。这是打包应用程序的最佳选择。我们可以在清单类路径中指定依赖项,像这样 Class-Path: app1.jar app2.jar driver.jar

注意:请在类路径条目中使用正确的分隔符,例如在 windows 上;是类路径条目的分隔符,在 unix:上是分隔符,在清单类路径中,您可以使用空格作为分隔符。此外,在提到 app1.jar/app2.jar/driver.jar 的地方,您必须使用 jar 文件的绝对或相对路径

于 2012-07-10T10:00:40.110 回答