maven .ClassNotFoundException如何使jar可执行

时间:2015-06-09 17:44:50

标签: eclipse maven

我是Maven的新手,我有以下问题。我有一个项目A,我已将其作为依赖项添加到另一个项目中。

这是我添加到我的pom中的内容

timestamp

在Eclipse中一切正常,但是当我尝试打开jar文件时,我收到了这条消息:

</build>


  <dependencies>
  <dependency>
      <groupId>the id</groupId>
      <artifactId>artifact id</artifactId>
      <version> the version</version>
      <scope>compile</scope>
    </dependency>

那我错过了什么? 任何建议都会有所帮助

2 个答案:

答案 0 :(得分:0)

Eclipse在后台自动完成自己的编译。结果是您的依赖项的jar文件可能在Eclipse中可用,但在本地maven存储库中不可用。尝试运行&#34; maven clean install&#34;首先在本地依赖的终端中(这会将它添加到您的本地maven存储库中),然后使用另一个&#34; maven clean install&#34;来构建您的下游项目。

这将在&#34; target&#34;中创建一个jar文件。 maven项目根目录下的目录。

答案 1 :(得分:0)

如果要将应用程序运行为:

java -jar yourapp.jar
你已经处理好两件事:

  1. 确保您在MANIFEST.MF中列出了您的主要课程,我相信您已经这样做了。

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>your.package.YourMainClass</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    
  2. 确保在运行应用程序时,您的类路径已正确构建。有几种方法可以做到这一点,但最简单的方法是使用shade插件。它将解压缩所有依赖项并将它们放入一个jar中。

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.3</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    
  3. 如果您在不使用阴影插件的情况下需要其他解决方案,请告诉我。