这是这个问题的后续问题:
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
?如果是这样的话?不只是出口到罐子里就足够了吗?
如果有人可以列出操作清单,那就太棒了。
答案 0 :(得分:1)
在其他问题的答案中没有人说过你需要使用maven来创建jar而不是使用Eclipse的export to jar选项。你需要做的是:
1)从https://maven.apache.org/download.cgi
下载maven2)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)
对我有用的是什么:
mvn clean
maven install
maven package
答案 3 :(得分:0)
在pom.xml中添加以下插件为我解决了这个问题:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>