Erlaubnis (java.lang.RuntimePermission exitVM) nicht gewährt wurde, während der Ausführung Steg Anschlag mit Maven-Ant-Task

Bekomme ich die folgende ant-Fehlermeldung in der Konsole beim ausführen jetty:stop-Befehls “ mvn Aufgaben,

[artifact:mvn] org.apache.tools.ant.ExitException: Permission (java.lang.RuntimePermission exitVM) was not granted.
[artifact:mvn]  at org.apache.tools.ant.types.Permissions$MySM.checkExit(Permissions.java:196)
[artifact:mvn]  at java.lang.Runtime.exit(Runtime.java:88)
[artifact:mvn]  at java.lang.System.exit(System.java:904)
[artifact:mvn]  at org.codehaus.classworlds.Launcher.main(Launcher.java:376)
[artifact:mvn]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[artifact:mvn]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[artifact:mvn]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[artifact:mvn]  at java.lang.reflect.Method.invoke(Method.java:597)
[artifact:mvn]  at org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:217)
[artifact:mvn]  at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:152)
[artifact:mvn]  at org.apache.tools.ant.taskdefs.Java.run(Java.java:764)
[artifact:mvn]  at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:218)
[artifact:mvn]  at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:132)
[artifact:mvn]  at org.apache.tools.ant.taskdefs.Java.execute(Java.java:105)
[artifact:mvn]  at org.apache.maven.artifact.ant.Mvn.execute(Mvn.java:81)
[artifact:mvn]  at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
[artifact:mvn]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[artifact:mvn]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[artifact:mvn]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[artifact:mvn]  at java.lang.reflect.Method.invoke(Method.java:597)
[artifact:mvn]  at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[artifact:mvn]  at org.apache.tools.ant.Task.perform(Task.java:348)
[artifact:mvn]  at org.apache.tools.ant.Target.execute(Target.java:357)
[artifact:mvn]  at org.apache.tools.ant.Target.performTasks(Target.java:385)
[artifact:mvn]  at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
[artifact:mvn]  at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
[artifact:mvn]  at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[artifact:mvn]  at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
[artifact:mvn]  at org.apache.tools.ant.Main.runBuild(Main.java:758)
[artifact:mvn]  at org.apache.tools.ant.Main.startAnt(Main.java:217)
[artifact:mvn]  at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
[artifact:mvn]  at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)

In der Suche für diesen Fehler, habe ich ähnliche Beiträge,

https://stackoverflow.com/a/8588201/1793718

https://issues.apache.org/jira/browse/MANTTASKS-201

https://readthefuckingmanual.net/error/1010/

darauf hindeutet Einstellung fork="true" würde das problem lösen, aber ich bekomme diese Fehlermeldung, wenn schon meine Gabel auf true gesetzt ist(oder sogar falsche)

Unten ist meine ant-target aufrufen stop jetty-server,

<target name="jetty-stop" fork="true">
    <artifact:mvn mavenHome="${maven.home}">
        <jvmarg value="-Xmx1024m" />
        <arg value="jetty:stop"/>
    </artifact:mvn>
</target>

Update :

Habe ich auch bemerkt, Fehlermeldungen während der Initialisierung der c3p0 gleiche, wie erwähnt, in dieser Frage,

java.Sicherheit.AccessControlException bei der Verwendung von Ant, aber läuft ok, beim Aufruf von java aus Konsole

beim starten den server mit dem folgenden ant-task,

<target name="jetty-start-jdk8">
    <delete dir="war/WEB-INF/lib"/>
    <artifact:mvn mavenHome="${maven.home}" fork="true">
        <jvmarg value="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000" />
        <jvmarg value="-javaagent:${jrebel.path}" />
        <jvmarg value="-Xbootclasspath/p:C:/Users/admin/AppData/Local/Temp//rebelboot.jar" />
        <arg value="compile"/>
        <arg value="war:exploded"/>
        <arg value="jetty:run"/>
    </artifact:mvn>
</target>

Obigen post auch nahe zu legen fork="true" um es zu lösen. Aber es ist bereits auf true gesetzt. Was könnte hier das Problem?

InformationsquelleAutor Lucky | 2016-07-22



2 Replies
  1. 2

    Lösung:

    Verwenden JDK anstelle der JRE in Ihren build-Pfad.

    Das problem war mein Projekt so konfiguriert wurde, dass in eclipse eine JRE statt JDK und die build.xml war Kommissionierung bis mein Projekt Konfiguration, die eine JRE. Für einige Gründe, die Ausführung des ant-tasks mit JRE wenn das System mit der Bibliothek. Wechsel auf JDK 1.8 das Problem gelöst. Nach dem ändern der Build-Pfad löschen Build.XML aus der Ant-View und fügen Sie erneut, um den Aufgaben.

  2. 0

    System.exit ( ) – Aufruf spricht direkt an die JVM, wodurch er sofort sterben. Da ein Java-Programm läuft von Ameise läuft in Ant JVM, alle Aufrufe von System.exit( ) wird töten Ant JVM.

    Da Sie versuchen, zu nennen, zu töten ant JVM, Sie haben eventuell keine Berechtigung dafür.

    Sicherheit-Berechtigungen können widerrufen werden, und gewährt während der Ausführung der Klasse über eine verschachtelte Berechtigungen element. Für weitere Informationen sehen Sie bitte https://svn.apache.org/repos/asf/ant/core/trunk/manual/Types/permissions.html

    Wenn die Berechtigung RuntimePermission exitVM wurde nicht erteilt (oder aufgehoben worden) das System.exit () – Aufruf wird abgefangen und behandelt werden wie angegeben in failonerror.

    Können Sie in Ihrem java-Aufgabe

    <java classname="org.stackoverflow.SpecialTool" fork="true">
        <permissions>
           <grant class="java.security.AllPermission"/>
        </permissions>
    </java>

    ODER

    Den java-task hat ein Attribut namens “ Gabel.

    <java classname="org.stackoverflow.SpecialTool" fork="true"/>

    Den Gabel-Attribut auf die java-Aufgabe gibt Ihnen die Möglichkeit, um dieses problem zu vermeiden. Das Attribut sagt dem java-task zum ausführen der Klasse in einer separaten JVM. In einer separaten JVM bedeutet, dass das Programm das System.exit ( ) – Aufruf kann nicht töten, Ant JVM.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.