Spring Boot通过命令行启动发生FileNotFoundException

Spring Boot + Jersey 通过命令行启动会发生错误FileNotFoundException异常

异常信息如下:

ERROR o.a.c.c.C.[Tomcat].[localhost].[/] - StandardWrapper.Throwable
org.glassfish.jersey.internal.ServiceConfigurationError: org.glassfish.jersey.internal.spi.AutoDiscoverable: : java.io.FileNotFoundException: JAR entry !/META-INF/services/org.glassfish.jersey.internal.spi.AutoDiscoverable not found in /tmp/jar_cache417521088140895909.tmp
	at org.glassfish.jersey.internal.ServiceFinder.fail(ServiceFinder.java:433)
	at org.glassfish.jersey.internal.ServiceFinder.parse(ServiceFinder.java:512)
	at org.glassfish.jersey.internal.ServiceFinder.access$400(ServiceFinder.java:155)
	at org.glassfish.jersey.internal.ServiceFinder$AbstractLazyIterator.hasNext(ServiceFinder.java:572)
	at org.glassfish.jersey.internal.ServiceFinder.toClassArray(ServiceFinder.java:418)
	at org.glassfish.jersey.internal.ServiceFinderBinder.configure(ServiceFinderBinder.java:90)
	at org.glassfish.hk2.utilities.binding.AbstractBinder.bind(AbstractBinder.java:172)
	at org.glassfish.hk2.utilities.binding.AbstractBinder.install(AbstractBinder.java:342)
	at org.glassfish.jersey.server.ServerBinder.configure(ServerBinder.java:94)
	at org.glassfish.hk2.utilities.binding.AbstractBinder.bind(AbstractBinder.java:172)
	at org.glassfish.jersey.internal.inject.Injections.bind(Injections.java:157)
	at org.glassfish.jersey.internal.inject.Injections._createLocator(Injections.java:147)
	at org.glassfish.jersey.internal.inject.Injections.createLocator(Injections.java:123)
	at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:330)
	at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:392)
	at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177)
	at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:369)
	at javax.servlet.GenericServlet.init(GenericServlet.java:158)
	at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1183)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4913)
	at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedContext.deferredLoadOnStartup(TomcatEmbeddedContext.java:78)
	at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.startConnector(TomcatEmbeddedServletContainer.java:256)
	at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:181)
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:297)
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:145)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:545)
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175)
	at com.jiajian.yishi.YishiServiceProjectApplication.main(YishiServiceProjectApplication.java:17)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
	at org.springframework.boot.loader.WarLauncher.main(WarLauncher.java:59)

  此问题是版本为8.5.6内置tomcat的bug,将tomcat.version 改为8.5.5就好了。

即:

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  <java.version>1.8</java.version>
  <tomcat.version>8.5.5</tomcat.version>
</properties>

  

时间: 2024-12-14 18:44:26

Spring Boot通过命令行启动发生FileNotFoundException的相关文章

spring boot 源码解析 启动流程

spring boot 源码解析 启动流程 在面试过程中经常被问到过spring boot的启动流程,今天就翻一下源码整体看一下: 首先,新建一个启动类,可以看到是首先调用的SpringApplication的静态方法run @SpringBootApplication public class SourceReadApplillcation { public static void main(String[] args) { SpringApplication.run(SourceReadAp

ubantu gen更改双系统默认启动项和grub命令行启动

(1)按照网上的教程. $vim /etc/default/grub 修改默认值 0 --> 4 $sudo update-grub 出现下面画面 命令终端显示更新了menu.lst文件,打开看时并没有修改默认启动项. $vim /boot/grub/menu.lst 发现默认值并没有改变. 上网查询发现应该是grub版本问题. $grub --version 发现版本是0.97,老版本,但在grub启动时发现却是grub2版本..不知道怎么回事. 因此尝试 重新生成grub.cfg文件 $su

让.Net程序支持命令行启动

很多时候,我们需要让程序支持命令行启动,这个时候则需要一个命令行解析器,由于.Net BCL并没有内置命令行解析库,因此需要我们自己实现一个.对于简单的参数来说,自己写一个字符串比较函数来分析args参数也未尝不可.但是如果需要配置的参数较多的话,就得好好设计一下这个解析器了. 秉着不重复造轮子的原则,我在网上搜了一下,在Stackoverflow上发现有人问了同样的问题:Best way to parse command line arguments in C#?.简单的看了一下,整理出了其中

vmware 命令行启动虚拟机

在redhat enterprise 5.3安装了vmware workstation,如何用vmware 命令行启动指定虚拟机?/usr/bin/vmware[[email protected] ~]# /usr/bin/vmware --help-all用法:  vmware [选项...] [--] [configuration file(s)]帮助选项:  -?, --help                       显示帮助选项  --help-all               

从命令行启动虚拟机

从命令行启动虚拟机: 2.用命令列出虚拟机的ID: 1 vim-cmd vmsvc/getallvms |grep <vm name> 注意: 第一列输出是vmid. 2.用命令查看虚拟机启动状态: 1 vim-cmd vmsvc/power.getstate <vmid> 3.用命令启动虚拟机: 1 vim-cmd vmsvc/power.on <vmid>

如何设置fedora默认从命令行启动?

Sumary:因为在fedora中没有/etc/initab文件我们不方便从这里设置它的runlevel target,但是linux又给我们提供了一个强悍的工具systemd,我们可以用system来链接默认的启动级别,所以开始吧! 一.实现代码 (1)删除目标链接并创建新的符号链接(从命令行启动) ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target (2)从图形界面启动 把multi-

命令行启动win7系统操作部分功能

control.exe /name microsoft.folderoptions 启动资源管理器的 文件夹属性 选项卡 control.exe /name Microsoft.AddHardware 控制面板所有控制面板项设备和打印机 control.exe /name Microsoft.AdministrativeTools 控制面板所有控制面板项管理工具 control.exe /name Microsoft.PeopleNearMe 网络邻居 control.exe /name Mic

转载:使用命令行启动VirtualBox虚拟机

使用命令行启动VirtualBox虚拟机 装上VirtualBox就琢磨着如何让它开机自动启动,又或者能够通过命令行的形式直接启动指定的虚拟机. 看了下VirtualBox的官方文档,发现有一个命令可以满足我的需求,即VBoxManage. VBoxManage提供了一系列的虚拟机管理命令,包括创建/删除/启动/修改等等,这里不一一列举.有点像Xen的XM命令. 不过这里只关心启动虚拟机的命令:VBoxManage startvm.VBoxManage的完整命令列表可以参考这里. VBoxMan

Mysql 命令行启动问题ERROR 1045 (28000): Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: NO)

Centos 刚装了mysql yum install mysql 安装成功了,安装最后要求输入了密码,也输入了,OK mysql -uroot -p 输入设置的密码 竟然报错了! ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YSE) 问朋友,他说初始密码是空的,可我命名设置了密码的阿. 密码留空 还是错误! ERROR 1045 (28000): Access denied for