Saya mencoba mengemas proyek menggunakan pustaka OptaPlanner 6.0.1 menjadi .jar melalui artefak jar IntelliJ IDEA tetapi bukannya manifest.mf saya yang berisi standar
Manifest-Version: 1.0
Main-Class: a.b.c.app
jar menggunakan yang disediakan di ecj-3.7.2.jar, salah satu pustaka pendukung OptaPlanner:
Manifest-Version: 1.0
Build-Jdk: 1.6.0_26
Built-By: ibrandt
Created-By: Apache Maven
Archiver-Version: Plexus Archiver
Karena itu, "no main manifest attribute, in appname.jar"
terjadi kesalahan saat mencoba menjalankan aplikasi. Jika saya mengganti manifes secara manual dalam file .jar dengan milik saya semuanya bekerja dengan benar. Apakah ada yang bisa saya lakukan untuk memperbaikinya?
Saya menyimpan perpustakaan di direktori / lib terpisah dan mereka ditambahkan ke root artefak jar sebagai Direktori yang Diekstrak, IntelliJ IDEA adalah v13.0.1.
java
intellij-idea
optaplanner
grudolf
sumber
sumber
Jawaban:
Saya memiliki masalah yang sama.
Pastikan MANIFEST.MF Anda ada di:
TIDAK
sumber
Memperbaiki:
sumber
Seperti disebutkan dalam komentar @ grudolf di salah satu jawaban lain, satu cara untuk melakukan ini (dan satu-satunya yang berhasil untuk saya dalam proyek Gradle yang diimpor) adalah dengan membuat toples kosong seperti berikut:
MEMPERBARUI:
Ini jelas merupakan bug di Idea. Jawaban terkait ini bekerja dengan andal ketika ada direktori yang diekstrak. Pada intinya, Anda menemukan .idea Anda / JARNAME.xml, menambahkan menambahkan elemen berikut ke paling atas dari
<root>
elemen untuk jar Anda. Elemen apa pun yang diekstrak di atas salinan file baru Anda yang berisi manifes akan merusak manifes baru Anda.sumber
Jika Anda ingin menentukan Kelas Utama, Anda harus menambahkan plugin ini ke pom.xml:
sumber
Saya memiliki masalah serupa.
Masalahnya ada di file pom.xml.
Saya tidak tahu untuk alasan apa kode ini berfungsi di gerhana, tetapi tidak di IntelliJ
Ini benar.
Manifest.mf bekerja !!!
Saya harap ini membantu.
sumber
Ada beberapa cara untuk membuat toples yang dapat dieksekusi. Menggunakan fitur GUI IntelliJ adalah salah satu cara yang baik. Cara lain adalah dengan menggunakan Maven (atau serupa di gradle, buildr, dll) yang ramah build-server:
Ini lebih atau kurang dapat disalin dari contoh optaplanner maven build:
sumber
Agar tidak ada masalah seperti Manifest, Anda harus memiliki direktori bernama "META-INF" di direktori "src". Jadi, buat dan letakkan file bernama "MANIFEST.MF" di dalamnya dengan konten berikut:
Tidak lupa mengganti nama paket yang berisi kelas Utama di atas!
sumber