编译并打包 Java 库
您需要先编译 Java UDx 并将其打包到 JAR 文件中,然后才能开始使用。
SDK 示例包括一个工作生成文件。请参阅下载并运行 UDx 示例代码。
编译 Java UDx
编译 Java UDx 源文件时,您需要将 SDK JAR 文件包含到 CLASSPATH 中,以便 Java 编译器可以解析 Vertica API 调用。如果要使用位于数据库群集中的主机上的命令行 Java 编译器,请输入以下命令:
$ javac -classpath /opt/vertica/bin/VerticaSDK.jar factorySource.java \
[functionSource.java...] -d output-directory
如果所有源文件均位于同一个目录中,则您可以在命令行中使用 *.java
,而不必逐个列出文件。
如果要使用 IDE,请验证 VerticaSDK.jar
文件的副本是否位于构建路径中。
UDx 类文件组织
编译 UDx 之后,您必须将其类文件和 BuildInfo.class
文件打包到 JAR 文件中。
注意
可以将任意数量的 UDx 打包到同一个 JAR 文件中。通过将多个 UDx 捆绑到一起,您不必加载多个库。要使用打包在 JDK 中的 jar 命令,您必须将 UDx 类文件组织成与类包结构匹配的目录结构。例如,假设 UDx 的工厂类的完全限定名称为 com.mycompany.udfs.Add2ints
。在这种情况下,类文件必须位于目录层次结构 com/mycompany/udfs
(相对于项目的基本目录)中。此外,您还必须将 BuildInfo.class
文件的副本放到路径 com/vertica/sdk
中,以便可以将该副本包含到 JAR 文件中。此类必须存在于 JAR 文件中,以指示用于编译 Java UDx 的 SDK 版本。
Add2ints UDSF 示例的 JAR 文件在编译后具有以下目录结构:
com/vertica/sdk/BuildInfo.class
com/mycompany/example/Add2intsFactory.class
com/mycompany/example/Add2intsFactory$Add2ints.class
将 UDx 打包到 JAR 文件中
要从命令行创建 JAR 文件,请执行下列操作:
-
更改为项目的根目录。
-
使用 jar 命令打包
BuildInfo.class
文件和 UDx 中的所有类:# jar -cvf libname.jar com/vertica/sdk/BuildInfo.class \ packagePath/*.class
键入此命令时,libname 表示为 JAR 文件选择的文件名(您可以随意选择任何名称),packagePath 表示包含 UDx 的类文件的目录的路径。
-
例如,要打包 Add2ints 示例中的文件,请使用以下命令:
# jar -cvf Add2intsLib.jar com/vertica/sdk/BuildInfo.class \ com/mycompany/example/*.class
-
更简单来说,如果已将
BuildInfo.class
和类文件打包到同一个根目录中,则您可以使用以下命令:# jar -cvf Add2intsLib.jar .
您必须将构成 UDx 的所有类文件包含到 JAR 文件中。UDx 始终包含至少两个类(工厂类和函数类)。即使您已将函数类定义为工厂类的内部类,Java 也会为内部类生成单独的类文件。
-
将 UDx 打包到 JAR 文件之后,您便已准备好将其部署到 Vertica 数据库。