J'ai un projet autonome qui est basé sur gradle. Quand je fais gradle build, le pot est généré sous build/libs. Comment exécuter ce fichier exécutable à partir de la ligne de commande? J'ai essayé : Java -cp build/libs/foo.jar full.package.classname
mais je reçois noClassFoundException pour les classes qui ont été importées. Comment inclure des jars dépendants dans le chemin de classe?
Puisque la question est marquée avec la balise gradle, je suppose que vous voulez exécuter le pot à partir de la construction gradle. Je suppose également que vous utilisez le plugin Java
pour votre build gradle.
Ajoutez les lignes suivantes dans votre gradle:
task runFinalJar(type: JavaExec) {
classpath = files('build/libs/foo.jar')
classpath += sourceSets.main.runtimeClasspath
main = full.package.classname
}
Vous pouvez maintenant inclure votre tâche dans le processus de génération:
build.dependsOn.add("runFinalJar")
Ou exécutez-le simplement en ligne de commande:
gradle build runFinalJar
UPDATE Il est plus propre d'utiliser le plugin d'application comme l'a suggéré Peter
Soit utilisez le plugin d'application pour créer une archive contenant votre code, ses dépendances et scripts de démarrage, soit créez un fat Jar exécutable. Ce dernier ne doit pas être fait de manière naïve, mais avec le plugin gradle-one-jar (ou similaire).
Ajouter une tâche simple pour exécuter le bocal
task runJar(type: JavaExec) {
main = "-jar";
args jar.archivePath
}
Je pense que les réponses vont au-delà de ce qu'est réellement la question. La question est, ou peut être reformulée comme, comment exécuter un JAR que gradle construit.
L'interrogateur déclare qu'ils ont essayé Java -cp build/libs/foo.jar full.package.classname
en vain.
La syntaxe correcte est Java -jar build/libs/foo.jar
, ou si le JAR est juste là, évidemment c'est alors juste Java -jar foo.jar
comme d'habitude.
La question doit être modifiée pour plus de clarté, à mon humble avis.
Je suis un débutant, donc mes explications ici seront simplistes. Ma build.gradle
le fichier ne contient qu'une seule ligne: apply plugin: 'Java'
. J'ai un hello world
Java dans src/main/Java/org/dx/test/App.Java
. Depuis la commande Shell, j'ai tapé: gradle build
. Et puis j'ai vu ce fichier jar créé comme par magie:
build/libs/helloworld.jar
Toutes les réponses ci-dessus n'ont pas fonctionné. Ce qui a fonctionné pour moi, c'est:
Java -cp build/libs/helloworld.jar org.dx.test.App
Maintenant, je sais que Gradle est plein de sorcellerie, donc je suis sûr que ma situation peut ne pas refléter pleinement votre situation. Les actions sont les suivantes:
build.gradle
fichierApp.Java
sous l'emplacement du dossier prescrit par le médecingradle build