不使用Intellij中的AppMain类运行java类

时间:2016-03-21 12:43:10

标签: java intellij-idea intellij-15

当我从Intellij运行java程序时,我注意到它们是通过名为AppMain的类(来自idea_rt.jar)的反射来执行的。

IntelliJ产品规范:

  

IntelliJ IDEA(社区版)IC-145.184.1 Build#IC-145.184,   建于2016年3月1日JRE:1.8.0_60-b27 x86

例如:如果我执行下面的代码,

public class Example{


    public static void main(String[] args) {
        throw new RuntimeException();
}
}

以下是来自AppMain的5个内部调用的输出

  

线程“main”中的异常java.lang.RuntimeException at   Example.main(Example.java:12)at   的> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:497)at   com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

如上所示,所有堆栈跟踪信息都有来自idea_rt.jar的AppMain类的5个额外堆栈跟踪信息

无论如何在不使用AppMain的情况下从IntelliJ IDE运行Java Applcation?

1 个答案:

答案 0 :(得分:3)

有几种方法可以实现这一目标。如果您使用的是gradle,则可以按照以下答案中的说明进行操作:gradle run,或者如果您正在使用maven,则可以按照此处的答案进行操作:maven run。配置maven或gradle解决方案后,可以从与正在使用的构建工具关联的工具窗口中运行它,也可以使用同一窗口为运行任务分配键盘快捷方式。

这些解决方案很有用,因为它们为您构建了类路径。如果您愿意以某种方式手动构建它(可能是当您要求IntelliJ为您运行该方法时从运行窗口复制它),那么您可以编写自己的shell脚本并要求IntelliJ运行它,要么以某种方式将其添加到您的路径并在shell工具窗口中键入其名称,要么添加新的“应用程序”。运行引用脚本的配置。

然而,之前的评论仍然是正确的 - 你不应该这样做。我认为,无论你考虑生产什么,你都不会从intellij运行应用程序?所以,这不是一个生产问题而且它只会让你个人感到困扰,在这种情况下你应该忽略它并更好地利用你的时间。