Java 可以从Eclipse(STS)启动Spring引导,但不能从CLI启动
我有一个似乎无法解决的问题。从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. 更多 我试着从我的创业课程中评论以下内容: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
@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)