java - 将缺少的驱动程序添加到生产中的遗留项目中

标签 java deployment runtime

我正在将旧项目迁移到新服务器。以前该项目使用 Oracle DB,但现在我希望它使用 Postgress。这些查询非常简单,并且在 Postgres 中的工作方式相同。

但是该项目缺少 Postgres jdbc 驱动程序。我可以以某种方式将此依赖项横向添加到 jar 中而不需要重新编译吗?

最佳答案

Can i somehow add this dependency to the jar without recompiling?

这取决于。

  • 如果您将服务器运行为 java -jar myserver.jar ... ,那么您至少需要修改 JAR 文件中的 list 。严格来说,这并不需要重新编译,但您确实需要分解、修改和重新打包 JAR 文件。

  • 如果服务器使用Class.forName显式加载 Oracle Driver类,那么您需要更改该代码来加载 Postgres Driver类代替。 (还有其他使用 JDBC 的方法可以避免这种情况,但这取决于旧服务器的实现方式。)

  • 如果您的服务器使用 Oracle 特定数据库类或 Oracle 特定 SQL 功能(或者需要在 Postgres 领域执行相同操作),则需要进行更广泛的更改。

但是,如果没有实际详细检查您的代码库,我们无法预测需要什么。

我的建议是用 Postgres 驱动程序 JAR 替换 Oracle 驱动程序 JAR,然后看看当您针对具有适当架构和数据的 Postgres 数据库运行服务器时会发生什么。

但我不会在“生产中”这样做。在测试环境中进行。如果你无法设置合适的测试环境……就算了。

如果您没有服务器的源代码,我也会忘记它。如果出现任何问题,您很可能需要源代码来找出问题并修复它。

关于java - 将缺少的驱动程序添加到生产中的遗留项目中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55743902/

相关文章:

java - 如何在 Spring Data JDBC 中将实体映射到表?

Javafx 2 维 TabPane

java - 'android.annotation.NonNull' 在 'android.annotation' 中不公开。无法从外部包访问

Java Bounded 类型参数错误

ruby-on-rails - 尝试创建新客户端时,Mongoid 找不到名称为 : 'default' 的客户端配置

objective-c - Objective C - 在运行时确定类类型

iphone - 应用程序 ID 在 iOS 应用程序中的用途是什么?将其设为字母数字的缺点是什么?

asp.net - 部署 ASP.Net MVC 应用程序最便宜的方法是什么?

c - getche 函数中的运行时错误

Java示例代码运行时错误