【发布时间】:2018-03-15 20:31:27
【问题描述】:
我是 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。这有点奇怪,但我认为它可以工作(没有规则说你不能拥有另一个具有 main 方法的对象,对吧?)
我不太确定如何导入它。我提取了 myjar.jar 来查看结构,我想使用的类位于a/b/c/Main.class。该 jar 存在于我试图从中调用它的程序的根目录中,所以我天真地尝试了 import a.b.c.Main 但当然这不起作用。我正在使用 IntelliJ 并尝试将 .jar 添加为模块(项目结构->模块->+->导入模块),我想将其添加到我的类路径中,但它只是说“无法从 myjar.jar 导入任何东西"
我使用 Maven 是为了物有所值。我需要让 IntelliJ 和 Maven 生成的 jar 在我构建时正常工作。
很明显,我迷路了。我什至不确定我尝试这样做的方式是否理想 - 导入另一个 Jar 似乎很脏,只是为了让我可以在代码中运行第二个主要方法。因此,我将不胜感激有关“正确方式”做事以及如何使这些事情发挥作用的任何指示。
【问题讨论】:
-
嗯,你应该知道服务器是如何配置的,你需要在服务器上设置类路径(或类似的东西)以包含另一个 Jar 文件。
-
我控制了用于在服务器上启动 Java 的
java命令,所以我打算将它添加到cp。也许这会奏效。也许我唯一的问题是我不知道如何将它添加到 IntelliJ。