Java 在独立JAR应用程序中集成DB2许可证

Java 在独立JAR应用程序中集成DB2许可证,java,jdbc,db2,Java,Jdbc,Db2,我已经开发了一个用于读取数据库表的小实用程序,我正在尝试访问DB2表。我使用的是DB2forz/OS,我的应用程序是一个独立的JAR文件,必须使用java-JAR在命令行中执行。此外,我还拥有从DBA获得的db2jcc_license_cu.jar许可证。我已经尝试将此许可证打包到我的JAR应用程序中,但我总是遇到以下错误: [jcc][t4][10509][13454][4.21.29] Connection to the data server failed. The IBM Data Se

我已经开发了一个用于读取数据库表的小实用程序,我正在尝试访问DB2表。我使用的是DB2forz/OS,我的应用程序是一个独立的JAR文件,必须使用
java-JAR
在命令行中执行。此外,我还拥有从DBA获得的
db2jcc_license_cu.jar
许可证。我已经尝试将此许可证打包到我的JAR应用程序中,但我总是遇到以下错误:

[jcc][t4][10509][13454][4.21.29] Connection to the data server failed. The IBM Data Server for JDBC and SQLJ license was invalid 
or was not activated for the DB2 for z/OS subsystem. If you are connecting directly to 
the data server and using DB2 Connect Unlimited Edition for System z, perform the 
activation step by running the activation program in the license activation kit.  
If you are using any other edition of DB2 Connect, obtain the license file, 
db2jcc_license_cisuz.jar, from the license activation kit, and follow the installation 
directions to include the license file in the class path. ERRORCODE=-4230, SQLSTATE=42968
连接url是jdbc:db2://://:progressiveStreaming=2应为类型4连接。我使用的是通用DB2驱动程序。我不知道包括许可证jar是否足以使事情正常工作,或者我是否需要更多的东西,比如加载许可证或类似的操作


任何帮助都将不胜感激。

据我所知,
db2jcc_license_cu.jar需要位于应用程序的类路径上,以便JDBC驱动程序能够获取它

当您使用
java-jar…
启动应用程序时,您可以在命令行上创建jar文件

所以你有两个选择:

  • 当您构建应用程序的jar文件时,请将
    db2jcc_license_cu.jar包含在您的jar文件中。然后,您需要将其放入清单中引用的其他jar文件所在的位置

  • 启动应用程序,使用
    -cp
    参数指定所有JAR:

    java-cp yourjar.jar;db2jcc4.jar;db2jcc_license_cu.jar your.main.Class
    

  • 请注意,上面的示例使用Windows路径分隔符。如果在Linux上运行应用程序,则需要使用
    而不是

    如果您使用的是Eclipse IDE,它包含一个工具,可以将项目构建为单个JAR文件(导出为可运行JAR):


    我花了4个小时试图做到这一点,最后我使用了jt400.rar,效果非常好

    只是一个问题:使用Maven,我已经用Maven汇编插件构建了我的应用程序,用jar和依赖项描述符构建了我的应用程序。你向我建议的选项应该是一样的,但我还是得到了例外。我遗漏了什么吗?@lore:许可证jar是否列在清单中?如果是,它是否存储在运行时可以找到的地方?目前许可证jar包含在我的应用程序jar中。加载所有其他依赖项时没有错误。然后,它们都没有类路径中的条目。但是,我将尝试您向我提出的第一个选项。您不能在jar中包含jar(除非您“分解”嵌入的jar)。是的,我“分解”了它。您的问题是不完整的,因为您没有说明是直接到Z/os,还是间接(通过诸如Db2 connect之类的网关软件产品)。此选项确定所需的操作,如消息所示。如果您不知道是哪个,请询问您的DBA。我只使用JDBC驱动程序。我不知道我是否直接去,我的DBA给了我许可证,并说我必须将其包括在我的应用程序中。这是不够的信息。必须知道您是尝试直接连接到z/OS还是间接连接,因为需要不同的许可活动。回去和你的DBA谈谈。