将另一个jar的程序导入我的jar中

时间:2018-03-15 20:31:28

标签: java maven

我是Java的新手。我有一个Java程序,它作为.jar文件部署到服务器。我有另一个可执行程序,也是Java,我需要它来调用(在myjar.jar中)。起初我基本上是在炮轰并创建另一个java实例,如:

List<String> commandAndParameters = new ArrayList<String>(Arrays.asList("java", "-jar", "myjar.jar"
ProcessBuilder builder = new ProcessBuilder();
builder.command(commandAndParameters);
Process process = builder.start();
...

这个工作效果不好,启动第二个Java实例也很慢,所以我想我只是将jar导入到我的程序中并直接运行该类。主类叫做Main,当然我要调用的类的方法是main。这有点奇怪,但我认为它可以工作(没有规则说你不能用主方法有另一个对象,对吗?)

我不确定如何导入它。我提取myjar.jar来查看结构,我要使用的类是a/b/c/Main.class。 jar存在于我试图调用它的程序的根目录中,所以我天真地尝试导入a.b.c.Main,但当然这不起作用。我正在使用IntelliJ并尝试添加.jar作为模块(项目结构 - &gt;模块 - &gt; + - &gt;导入模块),我想将它添加到我的类路径中,但它只是说“无法导入任何东西myjar.jar“

我正在使用Maven来获取它的价值。我需要让IntelliJ正常工作,以及Maven生产的jar在我构建时工作。

很明显,我迷失了。我甚至不确定我尝试这样做的方式是否理想 - 导入另一个Jar肯定看起来很脏,所以我可以在代码中运行第二个主方法。因此,我很欣赏任何有关“正确方法”的指示,以及如何使这些工作正常运行。

1 个答案:

答案 0 :(得分:1)

如果您通过Maven构建项目,则需要将import .jar文件作为依赖项添加到您从

导入.jar的项目中。

如果您的其他项目(您要导入的.jar)已经由Maven构建,那么这很容易做到。如果没有,您可以使用mvn install:install-file将其安装到本地.m2 repo(请参阅https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html

在你的pom文件中引用.jar后,IntelliJ会识别它。

也可以手动将.jar文件作为依赖项添加到IntelliJ中的模块。如果您已经在使用Maven,我建议尽可能避免这种情况。如果需要,您可以转到项目设置,然后选择&#34;模块&#34;,选择您的模块,然后选择&#34;依赖关系&#34;,然后单击加号以添加.jar依赖关系到你的模块。

enter image description here