候补MVN春季启动:运行

问题描述:

我有我运行使用弹簧启动应用程序:候补MVN春季启动:运行

mvn spring-boot:run 

和这工作完全正常。 我想运行使用java -jar选择这个应用程序,当我运行它:

java $JAVA_OPTS -jar target/backend-1.0-SNAPSHOT.jar --server.port=8080 $JAR_OPTS 

我得到这个错误:

org.glassfish.jersey.server.internal.scanning.ResourceFinderException: java.io.FileNotFoundException: /Users/cat/IdeaProjects/backend/target/backend-1.0-SNAPSHOT.jar!/BOOT-INF/classes (No such file or directory 

我无法弄清楚,为什么?而且我没有任何运气搜索了很多东西。 我们是否有替代mvn spring-boot:run

我想这样做,因为我在Heroku上部署,当我把Procfileweb: mvn spring-boot:run,我得到的错误,使得MVN不存在

编辑 这是我试图运行代码:

https://github.com/jasenkoh/spring-boot-jersey-hibernate

完成的堆栈跟踪:

type Exception report 

message Servlet.init() for servlet servletContainer threw exception 

description The server encountered an internal error that prevented it from fulfilling this request. 

exception 

javax.servlet.ServletException: Servlet.init() for servlet servletContainer threw exception 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) 
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110) 
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425) 
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Thread.java:745) 
root cause 

A MultiException has 1 exceptions. They are: 
1. org.glassfish.jersey.server.internal.scanning.ResourceFinderException: java.io.FileNotFoundException: /Users/asfandyar/IdeaProjects/spring-boot-jersey-hibernate/target/spring-boot-jersey-hibernate-1.0-SNAPSHOT.jar!/BOOT-INF/classes (No such file or directory) 

    org.jvnet.hk2.internal.Utilities.justCreate(Utilities.java:1011) 
    org.jvnet.hk2.internal.ServiceLocatorImpl.create(ServiceLocatorImpl.java:961) 
    org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1053) 
    org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1045) 
    org.glassfish.jersey.server.ApplicationHandler.createApplication(ApplicationHandler.java:385) 
    org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:342) 
    org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:392) 
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177) 
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:369) 
    javax.servlet.GenericServlet.init(GenericServlet.java:158) 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) 
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110) 
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425) 
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Thread.java:745) 
root cause 

org.glassfish.jersey.server.internal.scanning.ResourceFinderException: java.io.FileNotFoundException: /Users/asfandyar/IdeaProjects/spring-boot-jersey-hibernate/target/spring-boot-jersey-hibernate-1.0-SNAPSHOT.jar!/BOOT-INF/classes (No such file or directory) 
    org.glassfish.jersey.server.internal.scanning.JarZipSchemeResourceFinderFactory.create(JarZipSchemeResourceFinderFactory.java:89) 
    org.glassfish.jersey.server.internal.scanning.JarZipSchemeResourceFinderFactory.create(JarZipSchemeResourceFinderFactory.java:65) 
    org.glassfish.jersey.server.internal.scanning.PackageNamesScanner.addResourceFinder(PackageNamesScanner.java:282) 
    org.glassfish.jersey.server.internal.scanning.PackageNamesScanner.init(PackageNamesScanner.java:198) 
    org.glassfish.jersey.server.internal.scanning.PackageNamesScanner.<init>(PackageNamesScanner.java:154) 
    org.glassfish.jersey.server.internal.scanning.PackageNamesScanner.<init>(PackageNamesScanner.java:110) 
    org.glassfish.jersey.server.ResourceConfig.packages(ResourceConfig.java:680) 
    com.jersey.config.JerseyInitialization.<init>(JerseyInitialization.java:15) 
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    org.glassfish.hk2.utilities.reflection.ReflectionHelper.makeMe(ReflectionHelper.java:1350) 
    org.jvnet.hk2.internal.Utilities.justCreate(Utilities.java:1009) 
    org.jvnet.hk2.internal.ServiceLocatorImpl.create(ServiceLocatorImpl.java:961) 
    org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1053) 
    org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1045) 
    org.glassfish.jersey.server.ApplicationHandler.createApplication(ApplicationHandler.java:385) 
    org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:342) 
    org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:392) 
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177) 
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:369) 
    javax.servlet.GenericServlet.init(GenericServlet.java:158) 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) 
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110) 
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425) 
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Thread.java:745) 
root cause 

java.io.FileNotFoundException: /Users/asfandyar/IdeaProjects/spring-boot-jersey-hibernate/target/spring-boot-jersey-hibernate-1.0-SNAPSHOT.jar!/BOOT-INF/classes (No such file or directory) 
    java.io.FileInputStream.open0(Native Method) 
    java.io.FileInputStream.open(FileInputStream.java:195) 
    java.io.FileInputStream.<init>(FileInputStream.java:138) 
    java.io.FileInputStream.<init>(FileInputStream.java:93) 
    sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90) 
    sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188) 
    java.net.URL.openStream(URL.java:1045) 
    org.glassfish.jersey.server.internal.scanning.JarZipSchemeResourceFinderFactory.getInputStream(JarZipSchemeResourceFinderFactory.java:177) 
    org.glassfish.jersey.server.internal.scanning.JarZipSchemeResourceFinderFactory.create(JarZipSchemeResourceFinderFactory.java:87) 
    org.glassfish.jersey.server.internal.scanning.JarZipSchemeResourceFinderFactory.create(JarZipSchemeResourceFinderFactory.java:65) 
    org.glassfish.jersey.server.internal.scanning.PackageNamesScanner.addResourceFinder(PackageNamesScanner.java:282) 
    org.glassfish.jersey.server.internal.scanning.PackageNamesScanner.init(PackageNamesScanner.java:198) 
    org.glassfish.jersey.server.internal.scanning.PackageNamesScanner.<init>(PackageNamesScanner.java:154) 
    org.glassfish.jersey.server.internal.scanning.PackageNamesScanner.<init>(PackageNamesScanner.java:110) 
    org.glassfish.jersey.server.ResourceConfig.packages(ResourceConfig.java:680) 
    com.jersey.config.JerseyInitialization.<init>(JerseyInitialization.java:15) 
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    org.glassfish.hk2.utilities.reflection.ReflectionHelper.makeMe(ReflectionHelper.java:1350) 
    org.jvnet.hk2.internal.Utilities.justCreate(Utilities.java:1009) 
    org.jvnet.hk2.internal.ServiceLocatorImpl.create(ServiceLocatorImpl.java:961) 
    org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1053) 
    org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1045) 
    org.glassfish.jersey.server.ApplicationHandler.createApplication(ApplicationHandler.java:385) 
    org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:342) 
    org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:392) 
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177) 
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:369) 
    javax.servlet.GenericServlet.init(GenericServlet.java:158) 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) 
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110) 
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425) 
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Thread.java:745) 

中号ŸPOM文件可以在这里找到:

<plugin> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-maven-plugin</artifactId> 
    <configuration> 
     <executable>true</executable> 
    </configuration> 
</plugin> 

包带

mvn package 

你的罐子,您可以运行:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.jersey</groupId> 
    <artifactId>spring-boot-jersey-hibernate</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.0.RELEASE</version> 
    </parent> 

    <properties> 
     <start-class>com.jersey.Application</start-class> 
     <postgresql-version>9.4.1209.jre7</postgresql-version> 
     <jersey-version>2.23.1</jersey-version> 
     <jackson-version>2.8.1</jackson-version> 
    </properties> 

    <dependencies> 
     <!-- Spring --> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 
     <!-- End Spring --> 

     <!-- Postgres --> 
     <dependency> 
      <groupId>org.postgresql</groupId> 
      <artifactId>postgresql</artifactId> 
      <version>${postgresql-version}</version> 
     </dependency> 
     <!-- End Postgres --> 

     <!-- Jersey --> 
     <dependency> 
      <groupId>org.glassfish.jersey.core</groupId> 
      <artifactId>jersey-client</artifactId> 
      <version>${jersey-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.ext</groupId> 
      <artifactId>jersey-spring3</artifactId> 
      <version>${jersey-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.ext</groupId> 
      <artifactId>jersey-bean-validation</artifactId> 
      <version>${jersey-version}</version> 
     </dependency> 
     <!-- End Jersey --> 

     <!-- Jackson --> 
     <dependency> 
      <groupId>com.fasterxml.jackson.jaxrs</groupId> 
      <artifactId>jackson-jaxrs-json-provider</artifactId> 
      <version>${jackson-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.datatype</groupId> 
      <artifactId>jackson-datatype-hibernate4</artifactId> 
      <version>${jackson-version}</version> 
     </dependency> 
     <!-- End Jackson --> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.2</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

    <repositories> 
     <repository> 
      <id>spring-releases</id> 
      <url>http://repo.spring.io/libs-release</url> 
     </repository> 
    </repositories> 
    <pluginRepositories> 
     <pluginRepository> 
      <id>spring-releases</id> 
      <url>http://repo.spring.io/libs-release</url> 
     </pluginRepository> 
    </pluginRepositories> 
</project> 
+0

什么是在指定的版本pom。并检查/目标文件夹 – pvpkiran

+0

产生的jar的名称使用 org.springframework.boot弹簧引导启动父 1.4.0.RELEASE orange14

+0

你能从张贴整个堆栈跟踪请错误? –

您可以通过配置弹簧启动Maven插件让你的jar可执行文件通过输入您的应用程序​​

https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html

+0

这很不幸并不适合我。 – orange14

+0

你的意思是什么不起作用?它以什么方式不起作用? –

+0

我收到上面提到的同样的错误。添加目标不会改变 – orange14

要当你试图做执行的jar:

java $JAVA_OPTS -jar target/backend-1.0-SNAPSHOT.jar --server.port=8080 $JAR_OPTS

你必须与弹簧引导Maven插件的repackage目标打包罐子。
repackage的目标是绑定到Maven生命周期的package阶段。

所以这个插件配置重新包装是Maven的生命周期的包装phase期间建立了一个罐子或战争:

 <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <goals> 
         <goal>repackage</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

如果执行MVN包的目标(或后一个目标),它会在Maven项目的目标文件夹中创建两个JAR:

  • 原来的JAR用.original后缀(不含春季启动类和库,让罐子自足要启动)
  • 将具有经典JAR名称的可运行JAR。

如果你不希望添加这个配置,你可以直接从Maven的命令执行重新打包命令:

mvn package spring-boot:repackage 

参考: https://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-maven-plugin.html#build-tool-plugins-maven-plugin

+0

这不幸的是不起作用。请检查上面的编辑。感谢您的帮助 – orange14