编译并打包 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 文件中。

要使用打包在 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 文件,请执行下列操作:

  1. 更改为项目的根目录。

  2. 使用 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 数据库。