当前位置: 首页 > 面试题库 >

Intellij Java 2016&Maven:如何在JAR中嵌入依赖项?

张鹏云
2023-03-14
问题内容

我正在使用Intellij Java 2016.2.2和Maven创建一个非常简单的Java控制台应用程序。

我想添加一个外部库,所以我在Maven中添加了我的依赖项,如下所示:

<dependency>
    <groupId>jline</groupId>
    <artifactId>jline</artifactId>
    <version>2.12</version>
</dependency>

当我在IDE中运行它时,它运行良好,但在外部控制台中却没有运行(我遇到以下错误: java.lang.NoClassDefFoundError )。

我检查了一下,由于某种原因,外部JAR未添加到我刚刚生成的JAR中。我还在“文件->项目结构”中尝试了很多东西,但仍然无法正常工作…

我只想构建包含依赖关系的JAR,因此可以使用以下命令在控制台中运行应用程序:

java -jar myproject.jar

我怎样才能做到这一点?谢谢你的帮助!


问题答案:

我终于设法用Intellij Java生成了这个JAR,这是我的工作方式:

  • 在pom.xml文件中添加依赖项
  • 转到文件->项目结构->工件->新建-> JAR->来自具有依赖性的模块
  • 选择主类,然后单击确定
  • 在项目的src / main中,创建“ resources”文件夹
  • 将“ META-INF”(其中包含MANIFEST.MF)文件夹移到此“资源”文件夹中
  • 转到构建->构建工件以构建JAR

编辑

更好的方法是在pom.xml文件中添加以下几行:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>your.MainClass</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

然后使用“ clean”和“ package” maven命令。

上面的最后3个步骤(关于MANIFEST.MF)似乎仍然是必需的。



 类似资料:
  • 我下载了一个Maven项目,可以运行来构建目标helloworld。jar,它依赖于多个第三方运行时jar。但是,我不知道如何使用Maven将这些第三方JAR自动复制到特定目录中。查看pom。xml,我发现了以下语句。因此,基本上我希望将第三方JAR复制到。要做到这一点,我应该使用哪个maven插件/短语/目标?有人能给我看一个可运行的maven语法吗?谢谢

  • 如果我有一个OSGI Bundle jar中嵌套了依赖项jar,我是否需要在导入包清单中列出这些类以便使用它们?我不这么认为。 另外,我如何将这些依赖项jar添加到我的包中。我只是把它们放在根文件夹里吗?我是否需要向清单文件添加任何内容才能使用这些依赖关系?

  • 如何将这个插件添加为依赖项和插件?我如何将此用作依赖项? 谢谢

  • 问题内容: 有没有一种方法可以强制maven(2.0.9)将所有依赖项包含在单个jar文件中? 我有一个构建到单个jar文件中的项目。我希望将依赖项中的类也复制到jar中。 更新:我知道我不能只在jar文件中包含jar文件。我正在寻找一种方法来解压缩指定为依赖项的jar,并将类文件打包到我的jar中。 问题答案: 你可以使用带有描述符的插件来执行此操作。这是我们之一的相关块,它可以完成此任务:

  • 问题内容: 已经有很多资源,但是我似乎无法使它正常工作。我究竟做错了什么?jar文件位于: http://www.alexandertechniqueatlantic.ca/multimedia/AT-web-presentation- imp.jar 我用来嵌入的代码是: 我正在使用的测试页位于: http://www.alexandertechniqueatlantic.ca/test.php