java – SpringBoot loader.path无法加载外部Jar
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – SpringBoot loader.path无法加载外部Jar,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3076字,纯文字阅读大概需要5分钟。
内容图文
![java – SpringBoot loader.path无法加载外部Jar](/upload/InfoBanner/zyjiaocheng/746/af159d016ed74f5c86cdc9b0e7e3c9fc.jpg)
我正在使用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.Driver
2016-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.Driver
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at 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所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。