Почему ant не может запустить Main, когда JVM может

class Main {
    public static void main(String[] args) {
       ....
    }
}

Запуск программы через оболочку:java Mainработает как положено но запуск программы через ant:


    
`

вызывает эту ошибку:

java.lang.IllegalAccessException: Class org.apache.tools.ant.taskdefs.ExecuteJava can not access a member of class Main with modifiers "public static"

JLS Section 12.3.3 Resolution of Symbolic References:

IllegalAccessError: A symbolic reference has been encountered that specifies a use or assignment of a field, or invocation of a method, or creation of an instance of a class, to which the code containing the reference does not have access because the field or method was declared private, protected, or default access (not public), or because the class was not declared public.

Таким образом, org.apache.tools.ant.taskdefs.ExecuteJavaне может выполнить метод, потому что его окружающий класс является закрытым, но если я запускаю jvm, указывающий на.class, с помощью частного метода, он не проходит через тот же механизм безопасности?

Этот вопрос похож, но я все еще не понимаю

7
задан Community 23 May 2017 в 12:25
поделиться