java – SpringBoot loader.path无法加载外部Jar

java – SpringBoot loader.path无法加载外部Jar,第1张

概述我正在使用 springboot作为webapp,我正在尝试设置一个外部目录,该目录将包含最终用户可能选择使用的各种JDBC驱动程序.要做到这一点,我补充说: loader.path=/opt/myapp/lib/ 到我的application.properties文件,这是由PropertySourcesPropertyResolver选取的 2016-04-28 17:27:38.739 DE 我正在使用 springboot作为webapp,我正在尝试设置一个外部目录,该目录将包含最终用户可能选择使用的各种JDBC驱动程序.要做到这一点,我补充说:

loader.path=/opt/myapp/lib/

到我的application.propertIEs文件,这是由PropertySourcesPropertyResolver选取的

2016-04-28 17:27:38.739 DEBUG 22539 --- [restartedMain] o.s.c.e.PropertySourcesPropertyResolver  : Found key 'loader.path' in [applicationConfigurationPropertIEs] with type [String] and value '/opt/myapp/lib/'

我的问题是我似乎无法从任何放入此目录的jar中加载任何JDBC驱动程序,我缺少什么?我正在使用默认的嵌入式tomcat服务器.当我尝试使用Class.forname加载驱动程序时,我得到以下内容,就像该目录中不存在jar.

public Connection buildConnection(DataSource dataSource) throws ClassNotFoundException,sqlException {    if (dataSource == null) {        throw new NullPointerException("Data Source is null!");    }    if (!dataSource.isReady()) {        throw new IllegalArgumentException("Data Source is reporting that it is not ready!");    }    logger.deBUG("Loading JDBC Driver: {}",dataSource.getDriverClass());    Class.forname(dataSource.getDriverClass());    logger.deBUG("Loaded Driver: {}",dataSource.getDriverClass());    logger.deBUG("Attempting to build connection using: {}",dataSource.getConnectionString());    DriverManager.setLoginTimeout(10);    Connection c = DriverManager.getConnection(dataSource.getConnectionString(),dataSource.getUsername(),dataSource.getpassword());    if (c != null) {        c.setautoCommit(true);        c.setReadonly(true);        return c;    }    throw new NullPointerException("Unable to create connection!");}

这是抛出的异常

2016-04-28 17:38:53.525 DEBUG 22539 --- [nio-8081-exec-5] c.c.reportout.processor.JobProcessor     : Loading JDBC Driver: com.MysqL.jdbc.Driver2016-04-28 17:38:53.526  WARN 22539 --- [nio-8081-exec-5] c.c.reportout.processor.JobProcessor     : Unable to successfully test connection: com.MysqL.jdbc.Driverjava.lang.classNotFoundException: com.MysqL.jdbc.Driverat java.net.urlclassloader.findClass(urlclassloader.java:381) ~[na:1.8.0_91]at java.lang.classLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_91]at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) ~[na:1.8.0_91]at java.lang.classLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_91]at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:151) ~[spring-boot-devtools-1.3.3.RELEASE.jar:1.3.3.RELEASE]at java.lang.classLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_91]at java.lang.class.forname0(Native Method) ~[na:1.8.0_91]at java.lang.class.forname(Class.java:264) ~[na:1.8.0_91]

关于如何调试这个或我做错了的任何指针?

谢谢

解决方法 所以经过大量的谷歌搜索后,事实证明我能够通过添加以下内容来解决它:

<configuration>    <layout>ZIP</layout></configuration>

到我的pom文件中的spring-boot-maven-plugin插件.所以工作版现在看起来像这样:

<plugins>        <plugin>            <groupID>org.springframework.boot</groupID>            <artifactID>spring-boot-maven-plugin</artifactID>            <version>${spring-boot.version}</version>            <configuration>                <layout>ZIP</layout>            </configuration>            <executions>                <execution>                    <goals>                        <goal>repackage</goal>                    </goals>                </execution>            </executions>        </plugin>    </plugins>
总结

以上是内存溢出为你收集整理的java – SpringBoot loader.path无法加载外部Jar全部内容,希望文章能够帮你解决java – SpringBoot loader.path无法加载外部Jar所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1217207.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存