当前位置: 首页 > 知识库问答 >
问题:

可以从Eclipse (STS)启动Spring Boot,但不能从CLI启动

潘星阑
2023-03-14

但是,当我尝试从命令行运行它时,我收到一个错误,指出文件丢失:

线程“main”Java . lang . runtime exception:Java . lang . reflect . invocationtargetexception at org . spring framework . boot . loader . main Method runner . run(main Method runner . Java:62)at Java . lang . thread . run(thread . Java:748)导致:Java . lang . reflect . invocationtargetexception at sun . reflect . nativemethodaccessorimpl . invoke 0(Native methodaccessorimpl)at sun . invoke(nativemethodaccessorimpl . Java:62)...1更多由:Java . lang . arraystoreexception:sun . reflect . annotation . typenotpresentexceptionproxy at sun . reflect . annotation . annotation parser . parsesclassarray(annotation parser . Java:724)at sun . reflect . annotation . annotation . annotation parser . parse array(annotation parser . Java:531)at sun . reflect . annotation . annotation . annotation parser . parse annotation 2(annotation parser . Java:281...6更

我试着从我的创业课中注释出以下内容:

@SpringBootApplication
@Import({
//    AppConfig.class
//    , ActiveMqServerConfig.class
//    , MetricConfig.class
//    , AdminConfig.class
//    , SystemConfig.class
//    , SystemMessageRouterConfig.class
//    , CommandConfig.class
//    , AdminMessageRouterConfig.class
})
public class AdminServer {

这解决了这个问题,所以我可以从命令行启动,但我不明白为什么。在我的睡衣里。xml我定义了每个其他模块,其中包含这些文件。

我使用的是Spring Boot Starter 1.3.5.RELEASE和Java 8。

任何帮助将不胜感激。

更新

这是我的完整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>

要从命令行启动项目,我运行:

mvn clean install
java -jar target/admin.jar

在逐个注释了每个导入后,我还发现问题源于导入的模块,但尚未找到原因。

从命令行运行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中使用的是一样的

共有1个答案

齐乐
2023-03-14

使用mvn净安装不会为您生成可执行jar文件,因为这不会打包可执行的Spring boot库和pom依赖项。它只会生成一个只包含您的代码的jar文件。

使用< code > spring-boot-maven-plugin ,您需要执行< code > spring-boot:re package 目标和阶段,以便可执行jar文件与spring boot/pom依赖项一起正确打包,并准备好在命令行上执行。即运行< code > mvn package spring-boot:re package ,然后在命令行上运行您的应用程序。

有关此问题的完整详细信息,请参阅Spring Boot Maven插件文档和sping-boot:重新打包目标。

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

 类似资料:
  • IDE:Eclipse Luna Desktop OS:Windows Server 2008 R2 Enterprise Simulator:na/默认设备:na/默认Java:JDK1.8.0_40 大家下午好。我是一个新手,第一次下载codenameone作为Eclipse IDE中的插件。安装进行得很顺利,我启动了一个新项目,带有原生主题和Hello World模板。但是,当我试图推出主题

  • 问题内容: 我想让我的Eclipse插件导致用户默认浏览器打开一个URL。这似乎是非常标准的行为,但是我还无法找到有关如何执行此操作的任何文档。 有人可以帮忙吗? 问题答案: 您正在寻找:

  • Windows 10,JDK 1.8或15,eclipse 2021-06,maven project HelloWorld。我从eclipse marketplace安装了payara工具。启动payara服务器给出错误消息: “在Felix平台上启动Payara服务器错误:解析系统捆绑语句时出错。org.osgi.framework.BundleException:导出的软件包名称不能是零长度

  • 以下是我的小程序的要点 一个python脚本,用于检查某个目录中是否有新文件(电影文件),并相应地更新sqlite3数据库,从而将要处理的文件排队。使用launchctl每分钟运行一次。 另一个python脚本,使用HandBrake命令行界面进行文件转换的实际处理。还可以使用launchctl每分钟运行一次。 在第二个脚本中,转换完成后,我想启动一个applescript,将文件导入到iTune

  • 我有一个在pi模型3B上运行的selenium脚本,当使用 /usr/bin/python /home/pi/main.py手动运行时,该脚本运行得很好,但是当使用crontab或LXDE-pi/autostart运行它时,它只是启动浏览器,不会继续做它应该做的事情。我试图使用日志库记录信息,但没有看到任何有用的东西。起初我认为这是因为selenium没有随sudo安装,但它在python随sud

  • 当我运行它时,它告诉我,,我在Eclipse上运行了它。你能给我一些主意吗?我是个新手,对这个问题很困惑。非常感谢。