如何在运行java程序时包含第三方jar

时间:2014-05-23 17:30:59

标签: java eclipse maven jar

非常的菜鸟问题。 我有一个java类

package org.foobar;
import thirdparty_jar1;
import thirdparty_jar2;

public class FooBar{
  public static void main(String[] args){
   // some code
 }
}

我使用eclipse作为我的ide,我在它的构建路径中添加了第三方jar 1和jar 2。然后我继续导出jar。 现在我有一个foobar.jar文件,现在我想运行它..

我做了java -cp /path/to/foobar.jar org.foobar.FooBar

但它抱怨缺少第三方图书馆。 我如何运行我的罐子(或者可能是一个胖罐子)。我只想从命令行运行我的程序。 感谢

3 个答案:

答案 0 :(得分:1)

jar有一个名为MANIFEST.MF的清单文件,位于META-INF文件夹下。这包含有关jar文件,主类等的详细信息。默认情况下Eclipse创建一个,您可以修改它或指定您自己的清单文件。

请参阅http://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.htmlUnderstanding the Default Manifest

要将库添加到类路径,您需要将jar文件的路径添加到清单文件中,如下所示:

Class-Path: jar1-name jar2-name directory-name/jar3-name

请参阅Adding Classes to the JAR File's Classpath

答案 1 :(得分:1)

如果您正在使用Maven,则可以将其添加到您的pom.xml文件中。这将创造一个额外的"脂肪"每当你使用Maven构建时都会使用jar。它包含在' build.plugins'部分:

<build>
    <plugins>

        ...

        <!--
            The plugin below creates an additional, executable JAR with all dependencies
            included in it.
        -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>attached</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <mainClass>${package}.FooBar</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

        ...

    </plugins>
</build>

答案 2 :(得分:0)

既然您说您使用的是Eclipse,那么您是否知道可以通过IDE导出可运行的JAR 所有依赖项?右键单击项目,然后选择“导出”。搜索“Runnable JAR”。你应该看到这个:

enter image description here

现在您有几个选择:

  

将所需的库提取到生成的JAR中。

这将解压第三方JAR并将它们与您的班级一起重新打包到一个JAR中。

  

将所需的库打包到生成的JAR中。

这将包括第三方JAR到您的JAR中,以及一些特殊的Eclipse魔法来在需要时解压缩它们。

  

将所需的库复制到子文件夹

这会将第三方JAR复制到一个文件夹中,然后更新JAR的清单,将第三方JAR相对文件引用添加到类路径中。