是否允许打包Oracle JDBC驱动程序?

时间:2012-07-10 09:46:26

标签: java oracle jdbc licensing

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

2 个答案:

答案 0 :(得分:5)

  

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

这不正确。您的JAR文件可以包含带有Class-Path:的Manifest:可以命名Oracle .jar文件的条目。

答案 1 :(得分:0)

是的,您可以将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方法 - 您在jar文件中指定。类路径设置可以满足应用程序的任何依赖关系 - 我们不需要在启动应用程序时指定所有依赖jar文件。

类路径设置有不同的方法:

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

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