当我从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?
答案 0 :(得分:3)
有几种方法可以实现这一目标。如果您使用的是gradle,则可以按照以下答案中的说明进行操作:gradle run,或者如果您正在使用maven,则可以按照此处的答案进行操作:maven run。配置maven或gradle解决方案后,可以从与正在使用的构建工具关联的工具窗口中运行它,也可以使用同一窗口为运行任务分配键盘快捷方式。
这些解决方案很有用,因为它们为您构建了类路径。如果您愿意以某种方式手动构建它(可能是当您要求IntelliJ为您运行该方法时从运行窗口复制它),那么您可以编写自己的shell脚本并要求IntelliJ运行它,要么以某种方式将其添加到您的路径并在shell工具窗口中键入其名称,要么添加新的“应用程序”。运行引用脚本的配置。
然而,之前的评论仍然是正确的 - 你不应该这样做。我认为,无论你考虑生产什么,你都不会从intellij运行应用程序?所以,这不是一个生产问题而且它只会让你个人感到困扰,在这种情况下你应该忽略它并更好地利用你的时间。