Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可以从Eclipse(STS)启动Spring引导,但不能从CLI启动_Java_Spring_Spring Boot - Fatal编程技术网

Java 可以从Eclipse(STS)启动Spring引导,但不能从CLI启动

Java 可以从Eclipse(STS)启动Spring引导,但不能从CLI启动,java,spring,spring-boot,Java,Spring,Spring Boot,我有一个似乎无法解决的问题。从Eclipse(Oxygen)和STS 3.9.2启动Spring引导应用程序时,从引导仪表板启动没有问题: 但是,当我尝试从命令行运行它时,会出现文件丢失的错误: 线程“main”java.lang.RuntimeException中的异常: java.lang.reflect.InvocationTargetException位于 org.springframework.boot.loader.MainMethodRunner.run(MainMethodRu

我有一个似乎无法解决的问题。从Eclipse(Oxygen)和STS 3.9.2启动Spring引导应用程序时,从引导仪表板启动没有问题:

但是,当我尝试从命令行运行它时,会出现文件丢失的错误:

线程“main”java.lang.RuntimeException中的异常: java.lang.reflect.InvocationTargetException位于 org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:62) 在java.lang.Thread.run(Thread.java:748)处,由以下原因引起: java.lang.reflect.InvocationTargetException位于 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)位于 invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 位于java.lang.reflect.Method.invoke(Method.java:498) org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:54) ... 1其他原因:java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy位于 sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:724) 在 sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:531) 在 sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:355) 在 sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:286) 在 sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120) 在 sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:72) 位于java.lang.Class.createAnnotationData(Class.java:3521) 注释数据(Class.java:3510)位于 java.lang.Class.getAnnotations(Class.java:3446)位于 org.springframework.core.type.StandardAnnotationMetadata。(StandardAnnotationMetadata.java:68) 在 org.springframework.beans.factory.annotation.AnnotatedGenericBeanDefinition。(AnnotatedGenericBeanDefinition.java:56) 在 org.springframework.context.AnnotatedBeanDefinitionReader.registerBean(AnnotatedBeanDefinitionReader.java:139) 在 org.springframework.context.AnnotatedBeanDefinitionReader.registerBean(AnnotatedBeanDefinitionReader.java:127) 在 org.springframework.context.AnnotatedBeanDefinitionReader.register(AnnotatedBeanDefinitionReader.java:122) 在 org.springframework.boot.BeanDefinitionLoader.load(BeanDefinitionLoader.java:158) 在 org.springframework.boot.BeanDefinitionLoader.load(BeanDefinitionLoader.java:134) 在 org.springframework.boot.BeanDefinitionLoader.load(BeanDefinitionLoader.java:126) 在 org.springframework.boot.SpringApplication.load(SpringApplication.java:708) 在 org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:357) 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:307) 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1191) 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1180) 位于se.itab.bos.admin.AdminServer.main(AdminServer.java:37)。。。6. 更多

我试着从我的创业课程中评论以下内容:

@SpringBootApplication
@Import({
//    AppConfig.class
//    , ActiveMqServerConfig.class
//    , MetricConfig.class
//    , AdminConfig.class
//    , SystemConfig.class
//    , SystemMessageRouterConfig.class
//    , CommandConfig.class
//    , AdminMessageRouterConfig.class
})
public class AdminServer {
这解决了这个问题,所以我可以从命令行启动,但我不明白为什么。在pom.xml中,我定义了所有其他模块,其中包含这些文件

我使用的是SpringBootStarter1.3.5.RELEASE和Java8

任何帮助都将不胜感激

更新

这是我的完整pom:

<?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>
        <parent>
            <groupId>se.bos</groupId>
            <artifactId>bos-parent</artifactId>
            <version>1.0.0-SNAPSHOT</version>
            <relativePath>../bos-parent</relativePath>
        </parent>
        <artifactId>bos-admin</artifactId>
        <packaging>jar</packaging>
        <name>BOS Admin</name>
        <properties>
            <java.version>1.7</java.version>
            <start-class>se.bos.admin.AdminServer</start-class>
        </properties>
        <dependencies>
            <!-- operations: spring boot -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-remote-shell</artifactId>
            </dependency>
            <!-- operations: spring boot admin -->
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-starter-client</artifactId>
            </dependency>
            <!-- application: bos -->
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>bos-site</artifactId>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>bos-server</artifactId>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>bos-core</artifactId>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>bos-client</artifactId>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>bos-model</artifactId>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>bos-system</artifactId>
            </dependency>
            <!-- application: spring boot -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!-- test -->
            <!-- -->
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <executable>true</executable>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>${java.version}</source>
                        <target>${java.version}</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
在逐一评论每个导入之后,我还发现问题源于导入的模块,但还没有找到原因

从命令行运行
java-version

openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.16.04.2-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

这与Eclipse中使用的内容和JAVA_HOME中使用的内容相同,使用mvn clean install将不会为您生成可执行的jar文件,因为这不会打包可执行的spring引导库和pom依赖项。它只会生成一个只包含代码的jar文件

使用
springbootmaven插件
您需要执行
springboot:repackage
目标和阶段,以便将可执行jar文件与springboot/pom依赖项适当打包,并准备在命令行上执行。i、 e.运行
mvn包spring boot:repackage
,然后在命令行上运行应用程序

有关这方面的详细信息,请参见和目标


注意:它可以在Eclipse中工作,因为Eclispe已经适当地设置了类路径,以便在编译和运行时引用pom中的依赖项,而编译的jar文件却没有。使用
mvn clean install
将不会为您生成可执行jar文件,因为这不会打包可执行的spring引导库和pom依赖项。它只会生成一个只包含代码的jar文件

使用
springbootmaven插件
您需要执行
springboot:repackage
目标和阶段,以便将可执行jar文件与springboot/pom依赖项适当打包,并准备在命令行上执行。i、 e.运行
mvn包spring boot:repackage
,然后在命令行上运行应用程序

有关这方面的详细信息,请参见和目标


注意:它可以在Eclipse中工作,因为Eclispe已经适当地设置了类路径,以便在编译和运行时引用pom中的依赖项,而编译后的jar文件则不这样做。

您可以发布整个pom,以便查看正在使用的其他依赖项吗?PS:可能也会有帮助,我会一个接一个地注释这些类,看看到底是哪一个导致了问题。是Eclipse用来运行Spring boot应用程序的Java安装版本吗
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.16.04.2-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)