gpt4 book ai didi

spring-boot - 如果在同一个 Jar 中,为什么 Jars in Jars 不能看到 Jars 中其他 Jars 的内容?

转载 作者:行者123 更新时间:2023-12-04 12:28:26 27 4
gpt4 key购买 nike

tl;博士:我们的 Spring Boot jar 中的类似乎可以看到捆绑的 jar 中的类,但它们的内容似乎无法看到。为什么?

我们的主要产品是一个网络应用程序,但所有的业务逻辑都集中在一个核心 mac-guffin-api.jar . mac-guffin-api.jar不是 Spring Boot 项目,但有一个名为 net.initech.api.Configuration 的 Spring Java 配置文件初始化所有服务和存储库等。我们使用 MS SQL Server 作为我们的后端 sqljdbc42:jar司机。

我们需要编写一个 ETL 来重用来自 API 项目的相同业务逻辑,因此我们创建了一个导入 mac-guffin-api.jar 的 Spring Boot Spring Batch 项目。作为 Maven 依赖项。 ETL 的配置( net.initech.etl.Configuration )导入的 API 配置没有问题(我可以从控制台日志中看到它)但是当 API 配置去创建数据库连接时 它找不到驱动程序。

Caused by: java.lang.ClassNotFoundException: 'com.microsoft.sqlserver.jdbc.SQLServerDriver'
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:246)
... 113 more

但是,我可以清楚地看到包含驱动程序的 JAR 存在。 ETL jar 的内容是( Nb: mac-guffin-api.jarsqljdbc42-4.2.jar 未解压,它们是 ETL jar 中的 jar ):
mac-guffin-etl.jar
|
+- org.springframework.boot.loader...
|
+- BOOT-INF
|
+- classes
| |
| +- com.initech.etl.Main.class
| |
| +- com.initech.etl.Configuration.class
|
+- lib
|
+- mac-guffin-api.jar
| |
| +- com.initech.api.Configuration.class
|
+- sqljdbc42-4.2.jar
|
+- com.microsoft.sqlserver.jdbc.SQLServerDriver.class

所以显然类ETL的配置类可以看到包含的JAR的内容(或者至少是API jar的内容),但是他们的API jar似乎看不到 com.microsoft.sqlserver.jdbc.SQLServerDriver.class在 SQL Server JDBC jar 中。

我什至可以做一个 Class.forName( "com.microsoft.sqlserver.jdbc.SQLServerDriver.class" )从 Spring 上下文的实例化之前开始,它没有问题。

这是类加载器的限制吗?是不是因为API项目不是Spring Boot?是因为缺少配置参数吗?这里发生了什么?

最佳答案

您可能从配置中获取驱动程序值,例如

my.driver = 'com.microsoft.sqlserver.jdbc.SQLServerDriver'



并且该配置使用单引号返回值。请检查您的配置文件。

关于spring-boot - 如果在同一个 Jar 中,为什么 Jars in Jars 不能看到 Jars 中其他 Jars 的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43458991/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com