相关疑难解决方法(0)

为什么Java main方法是静态的?

Java main()方法的方法签名是:

public static void main(String[] args){
    ...
}
Run Code Online (Sandbox Code Playgroud)

这种方法是否有理由是静态的?

java static program-entry-point

498
推荐指数
14
解决办法
49万
查看次数

为什么当JVM可以运行时,ant不能运行Main

class Main {
    public static void main(String[] args) {
        ....
    }
}
Run Code Online (Sandbox Code Playgroud)

通过shell启动程序:java Main按预期工作但通过ant启动程序:

<target name="run" depends="cmp">
    <java classname="Main" classpath="."/>
</target>`
Run Code Online (Sandbox Code Playgroud)

导致此错误:

java.lang.IllegalAccessException: Class org.apache.tools.ant.taskdefs.ExecuteJava can not access a member of class Main with modifiers "public static"
Run Code Online (Sandbox Code Playgroud)

JLS第12.3.3节符号引用的解决方案:

IllegalAccessError:遇到符号引用,指定字段的使用或赋值,或方法的调用,或类的实例的创建,包含引用的代码无法访问该类,因为该字段或方法是声明私有,受保护或默认访问(非公开),或者因为该类未声明为public.

所以org.apache.tools.ant.taskdefs.ExecuteJava无法执行该方法,因为它的封闭类是私有的,但是如果我使用私有方法启动jvm指向.class,它不会通过相同的安全机制?

这个问题很相似,但我还是不明白

java ant jvm

7
推荐指数
1
解决办法
2631
查看次数

公共类Main和Class Main之间有什么区别?

今年我正在攻读AP计算机科学,我的老师说要public class Main反对使用class Main.当我们问她为什么不上课时,她说这就是AP计算机科学如何做到的,并没有详细说明.

java

3
推荐指数
1
解决办法
194
查看次数

标签 统计

java ×3

ant ×1

jvm ×1

program-entry-point ×1

static ×1