我想将我的Java程序作为JAR文件分发。我的程序需要Oracle JDBC驱动程序,它也作为JAR文件提供。但java -jar
命令只接受一个JAR文件。因此,我必须合并两个JAR文件。这可以很容易地完成,但我可以这样做吗?我是否允许将我的程序作为包含Oracle JDBC JAR文件内容的JAR文件分发?
答案 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文件。
类路径设置有不同的方法:
set CLASSPATH=app1.jar;app2.jar;driver.jar;
和Unix / Linux export CLASSPATH=app1.jar:app2.jar:app3.jar
上)。当您控制系统变量并且它是受控环境时,此方法非常有用,此方法不适用于将应用程序分发到客户端-classpath
选项来完成 - 例如java -classpath app1.jar;app2.jar;driver.jar -jar executable.jar
此方法对于快速测试很有用,并且如果要引用的jar文件数量较少Class-Path: app1.jar app2.jar driver.jar
注意:请在类路径条目中使用正确的分隔符,例如在windows ;
上是类路径条目的分隔符,在unix :
上是分隔符,在清单类路径中你使用了空格{{ 1}}作为分隔符。另外在提到app1.jar / app2.jar / driver.jar的地方你必须使用jar文件的绝对路径或相对路径