尝试运行打包的Jar(Maven)时出错

时间:2013-05-16 15:28:04

标签: maven jar jsch

我在运行使用Maven打包的JAR时遇到问题。这是一个非常简单的类,只从本地计算机上的目录中获取文件并将其发布到SFTP。

我正在使用“mvn package”命令,并且看到JAR显示在我的目标文件夹中,但是当我尝试运行JAR时,我收到以下错误:

“线程中的异常”主“java.lang.NoClassDefFoundError:com / jcraft / jsch / Jsch   在。 java.lang.Class.getDeclaredMethods0   等

引起:java.lang.ClassNotFoundException:com.jcraft.jsch.Jsch“

现在程序在运行main方法的eclipse中运行时运行得很好,所以我假设maven包命令没有将所有正确的类带入我的JAR中?在我的“Maven Dependencies”中,我所拥有的是“jsch-0.1.49.jar”和“junit-3.8.1.jar”。任何帮助都将不胜感激。我相信在这个过程中我错过了一个步骤。

1 个答案:

答案 0 :(得分:1)

maven package命令和maven-jar-plugin没有构建附加了依赖项的jar文件。他们只是用您的项目源构建一个jar文件。

你需要一个超级罐,它包含你的主类需要的一切。存档的最简单方法是使用maven-shade-plugin

<project>
   ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.0</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>