[JAVA] [Gradle] L'histoire selon laquelle le fichier de classe n'existait pas dans le fichier jar

un événement

Lorsque j'ai construit en utilisant le fichier build.gradle comme indiqué ci-dessous, un fichier jar a été généré, mais le fichier de classe n'y existait pas.

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'
}

Cause et solution

La cause de cet événement était que le fichier java existait sous / src.

J'utilise le plug-in Java cette fois, mais si ce plug-in est laissé par défaut, il construira le fichier java sous / src / main / java.

Ainsi, lorsque j'ai déplacé le fichier java sous / src / main / java et que je l'ai construit, le fichier de classe a été généré avec succès dans le fichier jar.

Cette fois, il y avait un contexte de changement du projet qui a été initialement construit avec Ant pour construire avec Gradle, et je n'étais pas très conscient de la structure de répertoires de la source, donc il y avait une telle condition dans le plug-in Java. Je ne savais pas.

En passant, vous pouvez également définir le répertoire à construire en utilisant sourceSets comme indiqué dans ici. Je vais.

Cette fois, j'ai pris la politique de déplacer la source sous / src / main / java en tenant compte du sens de l'unité avec d'autres projets, mais je pense que cette politique est également intelligente.

Résumé

Si le fichier de classe n'existe pas dans le fichier jar généré à l'aide de Gradle, veuillez vérifier la structure des répertoires et quel est le répertoire à construire par Gradle.

Si vous utilisez un plug-in Java, le fichier java sous / src / main / java est construit par défaut, donc faites correspondre la structure du répertoire à celui-ci ou définissez le répertoire à référencer lors de la construction. Assurez-vous de le définir explicitement.

référence

Documentation officielle Gradle

Recommended Posts

[Gradle] L'histoire selon laquelle le fichier de classe n'existait pas dans le fichier jar
Créez un fichier jar qui peut être exécuté sur Gradle
Correction d'un problème où l'événement de défilement ne se déclenchait pas dans JQuery
Ajouter un horodatage au nom de fichier JAR dans Gradle
L'histoire selon laquelle l'erreur de construction ne s'est pas arrêtée lors de l'utilisation d'Eclipse 2020
Ignorer les paramètres qui n'existent pas dans le modèle avec ObjectMapper # readValue
L'histoire selon laquelle le servlet n'a pas pu être chargé dans l'application Web Java
J'ai vérifié le nom du package référencé par la classe contenue dans le fichier JAR
L'histoire de l'introduction de Gradle en tant que modernisation d'un système existant qui ne gérait pas de packages
Que faire si les modifications ne sont pas reflétées dans le fichier manifeste JAR
Dans WSL2, quand j'ai fait `docker-compose up`, j'ai eu une erreur disant que le fichier sh n'a pas été trouvé.
Traitement lorsqu'un ID qui n'existe pas dans la base de données est entré dans l'URL
[Java] Récupère le fichier dans le fichier jar quel que soit l'environnement
[Spring Boot] L'histoire selon laquelle le bean de la classe avec l'annotation ConfigurationProperties n'a pas été trouvé
Comment déboguer le fichier jar généré avec Eclipse
L'histoire selon laquelle la méthode d'initialisation de variable appelée par le constructeur Java ne doit pas être remplacée
L'histoire selon laquelle la mise à jour forcée n'a pas pu être mise en œuvre
L'histoire que .java est également construite dans Unity 2018
L'histoire qui a conduit à résoudre l'erreur car postgres n'a pas commencé avec docker-compose up
Le cas où @Autowired n'a pas pu être utilisé dans JUnit5
Configurer un multi-projet Gradle dans IntelliJ pour créer un fichier JAR
[Docker] Une histoire sur une erreur dans la composition de docker
Fichier de classe HttpServletRequest introuvable
L'histoire selon laquelle la connexion à la base de données et les autres délais d'expiration n'ont pas expiré selon la valeur définie
[Rails] Une histoire qui a continué à vérifier incorrectement la raison pour laquelle l'action de mise à jour n'a pas réussi (mise à jour)
Créez un fichier statique qui développe les variables à l'aide de la classe ERB
Erreur de non-recherche du symbole lors de la nouvelle classe dans un autre fichier Java
L'histoire que Tomcat a souffert d'une erreur de timeout dans Eclipse
[Swift] Formes variables qui n'ont pas été enseignées dans le livre d'introduction
Remplacez le contenu du fichier Jar
Décompressez le fichier zip en Java
Créer un JAR exécutable multi-projets avec Gradle
Inclure les ressources d'image dans le fichier jar
L'histoire de l'oubli de fermer un fichier en Java et de l'échec
[Java] L'histoire selon laquelle le tableau attendu n'a pas été obtenu par la méthode String.split.
[Rails] À propos de l'erreur selon laquelle l'image n'est pas affichée dans l'environnement de production
Exemple de programme qui renvoie la valeur de hachage d'un fichier en Java
Arrêtons l'entité divine qui exprime toutes les statistiques dans une seule classe!
[Java] Implémenter une fonction qui utilise une classe implémentée dans le modèle Builder
Après avoir vérifié le problème de Montyhall avec Ruby, c'était une histoire que je pouvais bien comprendre et que je ne comprenais pas bien