2017-12-25 1 views
0

Ich habe diese library verwendet, um zu versuchen, einen Telegram-Bot mit Java zu starten. Ich habe das Projekt mit Gradle eingerichtet, um die Abhängigkeiten zu verwenden.Eine illegale reflektive Zugriffsoperation ist aufgetreten, Java-Telegramm bot

Meine Projekthierarchie ist wie folgt:

.gradle 
build 
gradle 
src 
-main 
    -java 
    -Main.java 
    -MyAmazingBot.java 
build.gradle 
gradlew 
gradlew.bat 

Dies ist die guide ich auf Gradle Setup verwendet. Ich habe den Gradle Wrapper benutzt, um meinen Build laufen zu lassen.

Allerdings bekomme ich die folgende Warnung:

WARNING: An illegal reflective access operation has occurred 
WARNING: Illegal reflective access by com.google.inject.internal.cglib.core.$ReflectUtils$1 (file:/C:/Users/addis/.gradle/caches/modules-2/files-2.1/com.google.inject/guice/4.1.0/eeb69005da379a10071aa4948c48d89250febb07/guice-4.1.0.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) 
WARNING: Please consider reporting this to the maintainers of com.google.inject.internal.cglib.core.$ReflectUtils$1 
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations 
WARNING: All illegal access operations will be denied in a future release 

Doch der Bot fein läuft (es spiegelt meine Nachrichten zurück).

1) Sollte diese Nachricht ein Grund zur Besorgnis sein?

2) Ist es möglich, die JAR-Datei mit java -jar auszuführen? Ich bekomme eine Nachricht no main manifest attribute, in .\build\libs\fsc2.jar

3) Ist es möglich, ./gradlew run ohne Gradle Wrapper zu laufen?

Antwort

1

1) Dies ist offensichtlich auf eine Inkompatibilität zwischen Gradle und Java 9 zurückzuführen. Das Problem wurde in Gradle 2.4.12 behoben.

Referenz:

2) Offensichtlich nicht. Mit etwas Aufwand sollte es jedoch möglich sein, eine JAR-Datei zu erstellen, die die Anwendung und ihre Abhängigkeiten enthält, die auf diese Weise ausgeführt werden können.

3) Wahrscheinlich ja. Bei diesen Wrappern handelt es sich nur um Skripts. Sie sollten also die gleichen Aktionen ausführen können, indem Sie Befehle an eine Shell-Eingabeaufforderung eingeben. (Ich schlage vor, Sie lesen das Skript, um zu verstehen, was es tut, und dann entscheiden Sie, ob das Ausführen der Anwendung direkt sinnvoll ist.)

+0

Die Warnung scheint Guice/CGLIB, nicht Gradle. –

Verwandte Themen