[JAVA] [Gradle] Die Geschichte, dass die Klassendatei nicht in der JAR-Datei vorhanden war

Veranstaltung

Beim Erstellen mit der Datei build.gradle wie unten gezeigt wurde eine JAR-Datei generiert, die Klassendatei war jedoch nicht vorhanden.

build.gradle


apply plugin: 'java'

group = 'com.test.foo'
version = '1.0.0'

sourceCompatibility = '1.8'
targetCompatibility = '1.8'

compileJava {
    options.encoding = 'UTF-8'
}

repositories {
    mavenCentral()
}

dependencies {
    implementation('org.slf4j:slf4j-api:1.7.21')

    testCompile 'junit:junit:4.12'
    testCompile 'org.hamcrest:hamcrest-library:1.3'
}

Ursache und Lösung

Die Ursache für dieses Ereignis war, dass die Java-Datei unter "/ src" vorhanden war.

Ich verwende dieses Mal das Java-Plug-In, aber wenn dieses Plug-In als Standard beibehalten wird, wird die Java-Datei unter / src / main / java erstellt.

Als ich die Java-Datei unter "/ src / main / java" verschob und erstellte, wurde die Klassendatei erfolgreich in der JAR-Datei generiert.

Dieses Mal gab es einen Hintergrund für das Ändern des Projekts, das ursprünglich mit Ant erstellt wurde, um es mit Gradle zu erstellen, und ich war mir der Verzeichnisstruktur der Quelle nicht sehr bewusst, daher gab es eine solche Bedingung im Java-Plug-In. Wußte nicht.

Übrigens können Sie das zu erstellende Verzeichnis auch mithilfe von "sourceSets" festlegen, wie in [hier] gezeigt (https://docs.gradle.org/current/userguide/java_plugin.html#sec:java_project_layout). Ich werde.

Dieses Mal habe ich die Richtlinie übernommen, die Quelle unter "/ src / main / java" zu verschieben, um das Gefühl der Einheit mit anderen Projekten zu berücksichtigen, aber ich denke, diese Richtlinie ist auch klug.

Zusammenfassung

Wenn die Klassendatei in der mit Gradle generierten JAR-Datei nicht vorhanden ist, überprüfen Sie bitte die Verzeichnisstruktur und das von Gradle zu erstellende Verzeichnis.

Wenn Sie ein Java-Plug-In verwenden, werden die Java-Dateien unter "/ src / main / java" standardmäßig erstellt. Passen Sie daher die Verzeichnisstruktur an diese an oder legen Sie das Verzeichnis fest, auf das beim Erstellen verwiesen wird. Stellen Sie sicher, dass Sie es explizit einstellen.

Referenz

Gradle offizielle Dokumentation

Recommended Posts

[Gradle] Die Geschichte, dass die Klassendatei nicht in der JAR-Datei vorhanden war
Erstellen Sie eine JAR-Datei, die auf Gradle ausgeführt werden kann
Es wurde ein Problem behoben, bei dem das Bildlaufereignis in JQuery nicht ausgelöst wurde
Fügen Sie dem JAR-Dateinamen in Gradle einen Zeitstempel hinzu
Die Geschichte, dass der Erstellungsfehler bei Verwendung von Eclipse 2020 nicht aufgehört hat
Ignorieren Sie Parameter, die im Modell nicht vorhanden sind, mit ObjectMapper # readValue
Die Geschichte, dass das Servlet nicht in die Java-Webanwendung geladen werden konnte
Ich habe den Paketnamen überprüft, auf den die in der JAR-Datei enthaltene Klasse verweist
Die Geschichte der Einführung von Gradle als Nachrüstung eines bestehenden Systems, das keine Pakete verwaltet
Was tun, wenn die Änderungen nicht in der JAR-Manifestdatei berücksichtigt werden?
In WSL2, als ich "Docker-Compose Up" machte, bekam ich eine Fehlermeldung, dass die sh-Datei nicht gefunden wurde.
Verarbeitung, wenn eine ID, die nicht in der Datenbank vorhanden ist, in die URL eingegeben wird
[Java] Holen Sie sich die Datei unabhängig von der Umgebung in das JAR
[Spring Boot] Die Geschichte, dass die Bean der Klasse mit der Annotation ConfigurationProperties nicht gefunden wurde
So debuggen Sie die generierte JAR-Datei mit Eclipse
Die Geschichte, dass die vom Java-Konstruktor aufgerufene Methode zur Variableninitialisierung nicht überschrieben werden sollte
Die Geschichte, dass das erzwungene Update nicht implementiert werden konnte
Die Geschichte, dass .java auch in Unity 2018 erstellt wurde
Die Geschichte, die zur Lösung des Fehlers führte, weil postgres nicht mit Docker-Compose begann
Der Fall, dass @Autowired in JUnit5 nicht verwendet werden konnte
Richten Sie in IntelliJ ein Gradle-Multiprojekt ein, um eine JAR-Datei zu erstellen
[Docker] Eine Geschichte über einen Fehler beim Erstellen von Docker
HttpServletRequest-Klassendatei nicht gefunden
Die Geschichte, dass die DB-Verbindung und andere Zeitüberschreitungen nicht gemäß dem festgelegten Wert abgelaufen sind
[Rails] Eine Geschichte, die weiterhin fälschlicherweise den Grund überprüfte, warum die Aktualisierungsaktion nicht bestanden wurde (Aktualisierung)
Erstellen Sie eine statische Datei, die Variablen mithilfe der ERB-Klasse erweitert
Fehler beim Finden des Symbols bei neuer Klasse in einer anderen Java-Datei
Die Geschichte, dass Tomcat in Eclipse unter einem Timeout-Fehler litt
[Swift] Variable Formen, die im Einführungsbuch nicht gelehrt wurden
Ersetzen Sie den Inhalt der Jar-Datei
Entpacken Sie die Zip-Datei in Java
Erstellen Sie mit Gradle eine ausführbare JAR für mehrere Projekte
Fügen Sie Bildressourcen in die JAR-Datei ein
Die Geschichte, zu vergessen, eine Datei in Java zu schließen und zu scheitern
[Java] Die Geschichte, dass das erwartete Array nicht von der String.split-Methode erhalten wurde.
[Schienen] Über den Fehler, dass das Bild nicht in der Produktionsumgebung angezeigt wird
Beispielprogramm, das den Hashwert einer Datei in Java zurückgibt
Stoppen wir die göttliche Entität, die alle Statistiken in einer Klasse ausdrückt!
[Java] Implementieren Sie eine Funktion, die eine im Builder-Muster implementierte Klasse verwendet
Nachdem ich das Montyhall-Problem mit Ruby überprüft hatte, war es eine Geschichte, die ich gut verstehen konnte und die ich nicht gut verstand