java.lang.ClassNotFoundException:org.springframework.boot.SpringApplication

时间:2015-09-17 15:59:54

标签: spring maven jar spring-boot

这是这个问题的后续问题:

java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication Maven

我在Windows上使用Eclipse开发了一个Web服务。我需要在Solaris工作站上运行它,然后我得到ClassNotFoundException。

这是我的pom.xml :(我读过的maven shade插件可以创建一个包含所有dependecies的超级jar)。

<?xml version="1.0" encoding="UTF-8"?>

http://maven.apache.org/xsd/maven-4.0.0.xsd“&GT;     4.0.0

<groupId>org.springframework</groupId>
<artifactId>gs-rest-service</artifactId>
<version>0.1.0</version>
<packaging>jar</packaging>

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

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

<properties>
    <java.version>1.8</java.version>
</properties>


<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>

    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>shade</goal>
        </goals>
        <configuration>
          <transformers>
            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
              <mainClass>com.group.id.Launcher1</mainClass>
            </transformer>
          </transformers>
        </configuration>
      </execution>
    </executions>
  </plugin>
    </plugins>

</build>

<repositories>
    <repository>
        <id>spring-releases</id>
        <url>https://repo.spring.io/libs-release</url>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>spring-releases</id>
        <url>https://repo.spring.io/libs-release</url>
    </pluginRepository>
</pluginRepositories>

这是我尝试在Solaris上运行jar时遇到的异常:

  

引起:java.lang.ClassNotFoundException:org.springframework.boot.SpringApplication           在java.net.URLClassLoader $ 1.run(URLClassLoader.java:366)           在java.net.URLClassLoader $ 1.run(URLClassLoader.java:355)           at java.security.AccessController.doPrivileged(Native Method)           在java.net.URLClassLoader.findClass(URLClassLoader.java:354)           at java.lang.ClassLoader.loadClass(ClassLoader.java:425)           at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308)           在java.lang.ClassLoader.loadClass(ClassLoader.java:358)

该项目有一个“Maven Dependencies”文件夹,其中包含许多Spring框架的jar文件。

我真的不明白这个问题的答案。主要答案建议创建一个统一的jar,如下所示:How can I create an executable JAR with dependencies using Maven?

但我并不完全了解如何创建那个conolidated jar。我是否需要在pom文件的答案中添加这些行?或者别的地方?并且应该在命令行的窗口中运行mvn clean compile assembly:single?如果是这样的话?不只是出口到罐子里就足够了吗?

如果有人可以列出操作清单,那就太棒了。

4 个答案:

答案 0 :(得分:1)

在其他问题的答案中没有人说过你需要使用maven来创建jar而不是使用Eclipse的export to jar选项。你需要做的是:

1)从https://maven.apache.org/download.cgi

下载maven

2)maven dir包含一个'bin'文件夹。将此文件夹添加到“路径”环境变量中(在Windows 8上右键单击“此PC” - &gt;属性 - &gt;高级系统设置 - &gt;环境变量 - &gt;在系统变量中找到“路径” - &gt;双击它并通过将bin文件夹路径添加到该变量来添加它,就像其他路径所在的那样。

3)打开CMD

4)导航到项目的文件夹

5)输入mvn package

jar文件在“target”文件夹中创建。

祝你好运

答案 1 :(得分:0)

当你运行mvn package时,spring-boot-maven-plugin已经创建了一个可运行的JAR,其中包含所有依赖项(这是Spring Boot的主要目的之一)。所以删除maven-shade-plugin,因为这不是必需的(事实上,我认为这是真正的问题,因为它会干扰Spring Boot)。

答案 2 :(得分:0)

对我有用的是什么:

  1. 通过cmd或git bash cd到THE_PROJECT_FOLDER
    • mvn clean
    • maven install
    • maven package
  2. 使用您的IDE转到项目并转到包含main方法的类
  3. 点击@SpringBootApplication并在左侧看到一个像灯一样的图标
  4. 点击它并选择使用maven下载
  5. 重新启动服务器,一切正常!!!!

答案 3 :(得分:0)

在pom.xml中添加以下插件为我解决了这个问题:

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