如何将所有必需的罐子放入最后一个罐子里?

时间:2016-06-23 09:43:42

标签: java maven jar stack-trace

我在lib文件夹中创建了一个带有相关jar文件的jar文件。但是当我尝试将创建的jar用作库时,它将在线程" main"中显示类似"异常。 java.lang.NoClassDefFoundError"

任何人都可以帮我创建一个带有依赖罐子的罐子吗?

提前致谢。

这是我的pom.xml: `

<?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>
   <properties>
      <jclouds.version>1.9.2</jclouds.version>
   </properties>
   <groupId>org.apache.jclouds.examples</groupId>
   <artifactId>openstack-examples</artifactId>
   <version>1.0</version>
   <build>
      <plugins>
         <!-- any other plugins -->
         <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.1</version>
            <configuration>
               <descriptorRefs>
                  <descriptorRef>jar-with-dependencies</descriptorRef>
               </descriptorRefs>
            </configuration>
            <executions>
               <execution>
                  <id>make-assembly</id>
                  <!-- this is used for inheritance merges -->
                  <phase>package</phase>
                  <!-- append to the packaging phase. -->
                  <goals>
                     <goal>attached</goal>
                     <!-- goals == mojos -->
                  </goals>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>
</project>

这是我的jar文件中的MANIFEST的内容:

Manifest-Version: 1.0 
Archiver-Version: Plexus Archiver
Built-By: root
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_25 

Here I add the image for structure of my jar file.

1 个答案:

答案 0 :(得分:1)

您可以使用maven shade jar创建超级jar。

或者,您可以指定包含JARS的文件夹的路径,而不是创建1个jar。请参阅: - Run a JAR file from the command line and specify classpath

java -cp "jar_name.jar;libs/*" com.test.App之类的东西应该有用。