J'essaie de conditionner un projet à l'aide des bibliothèques OptaPlanner 6.0.1 dans un .jar via l'artefact jar d'IntelliJ IDEA, mais au lieu de mon manifest.mf contenant le standard
Manifest-Version: 1.0
Main-Class: a.b.c.app
le fichier jar utilise celui fourni dans ecj-3.7.2.jar, l'une des bibliothèques de support d'OptaPlanner:
Manifest-Version: 1.0
Build-Jdk: 1.6.0_26
Built-By: ibrandt
Created-By: Apache Maven
Archiver-Version: Plexus Archiver
Pour cette raison, une "no main manifest attribute, in appname.jar"
erreur se produit lors de la tentative d'exécution de l'application. Si je remplace manuellement le manifeste dans le fichier .jar par le mien, tout fonctionne correctement. Puis-je faire quelque chose pour résoudre ce problème?
Je garde les bibliothèques dans un répertoire / lib séparé et elles ont été ajoutées à la racine de l'artefact jar en tant que répertoire extrait, IntelliJ IDEA est v13.0.1.
la source
Réponses:
J'ai eu le même problème.
Assurez-vous que votre MANIFEST.MF se trouve dans:
NE PAS
la source
Pour réparer:
la source
Comme indiqué dans le commentaire de @ grudolf dans l'une des autres réponses, une façon de le faire (et la seule qui a fonctionné pour moi dans un projet Gradle importé) est de créer un pot vide comme suit:
METTRE À JOUR:
C'est définitivement un bug dans Idea. Cette réponse liée fonctionne de manière fiable lorsqu'il existe des répertoires extraits. En substance, vous trouvez votre .idea / JARNAME.xml, ajoutez l'élément suivant tout en haut de l'
<root>
élément pour votre jar. Tous les éléments extraits au-dessus de votre nouvelle copie de fichier qui contiennent un manifeste clobberont votre nouveau manifeste.la source
Si vous souhaitez spécifier la classe principale, vous devez ajouter ce plugin à pom.xml:
la source
J'avais un problème similaire.
Le problème était dans le fichier pom.xml.
Je ne sais pas pour quelle raison ce code fonctionne dans eclipse, mais pas dans IntelliJ
C'est correct.
Manifest.mf a fonctionné !!!
J'espère que ça aide.
la source
Il existe plusieurs façons de générer des fichiers JAR exécutables. L'utilisation de la fonctionnalité GUI d'IntelliJ est un bon moyen. Une autre façon est d'utiliser Maven (ou de manière similaire dans gradle, buildr, etc.) qui est compatible avec les serveurs de construction:
Il est plus ou moins copiable à partir des exemples optaplanner maven build:
la source
Pour n'avoir aucun problème comme Manifest, vous devriez avoir un répertoire nommé "META-INF" dans le répertoire "src". Alors, créez-le et mettez-y un fichier nommé "MANIFEST.MF" avec le contenu suivant:
Ne pas oublier de remplacer le nom du paquet contenant la classe Main ci-dessus!
la source