Can't execute jar- file: "no main manifest attribute"

Bir uygulama yükledim, çalıştırmaya çalıştığımda (çalıştırılabilir bir kavanoz) hiçbir şey olmuyor. Komut satırından çalıştırdığımda:

java -jar "app.jar"

Aşağıdaki mesajı alıyorum:

no main manifest attribute, in "app.jar"

Normalde, programı kendim oluşturmuş olsaydım, manifesto dosyasına bir ana sınıf niteliği eklerdim. Ancak bu durumda, dosya bir uygulamaya ait olduğu için bunu yapamıyorum. Ayrıca ana sınıfı bulup bulamayacağımı görmek için jar'ı çıkarmayı denedim, ancak çok fazla sınıf var ve hiçbirinin adında "main" kelimesi yok. Bunu düzeltmenin bir yolu olmalı çünkü program diğer sistemlerde sorunsuz çalışıyor.

Öncelikle, java -jar app.jar değil de java -jar "app" çalıştırdığınızı görmek biraz garip.

İkinci olarak, bir jar çalıştırılabilir yapmak için... META-INF/MANIFEST.MF adlı bir dosyayı jar yapmanız gerekir

dosyanın kendisinde (en azından) bu bir satır olmalıdır:

Main-Class: com.mypackage.MyClass

Burada com.mypackage.MyClass public static void main(String[] args) giriş noktasını tutan sınıftır.

Bunu CLI, Maven, Ant veya Gradle ile yapmanın birkaç yolu olduğunu unutmayın:

CLI** için aşağıdaki komut yeterli olacaktır: (tks @[dvvrt][1])

jar cmvf META-INF/MANIFEST.MF .jar 

Maven için, aşağıdaki kod parçacığı gibi bir şey işinizi görecektir. Bunun sadece eklenti tanımı olduğunu, tam pom.xml** olmadığını unutmayın:






      org.apache.maven.plugins
      maven-jar-plugin
      3.1.0
Yorumlar (11)

Bunun java -jar "app" yerine java -jar app.jar olması gerekirdi.

jarseçeneği yalnızca JAR dosyası çalıştırılabilir bir JAR dosyasıysa çalışır, bu da içindeMain-Class` niteliği olan bir manifest dosyasına sahip olması gerektiği anlamına gelir. Çalıştırılabilir bir JAR dosyasının nasıl oluşturulacağını öğrenmek için Programları JAR Dosyalarında Paketleme adresine bakın.

Eğer çalıştırılabilir bir JAR değilse, o zaman programı aşağıdaki gibi bir şeyle çalıştırmanız gerekir:

java -cp app.jar com.somepackage.SomeClass

burada com.somepackage.SomeClass, programı çalıştırmak için main yöntemini içeren sınıftır. (Bu sınıfın ne olduğu programa bağlıdır, verdiğiniz bilgilerden bunu söylemek imkansızdır).

Yorumlar (10)

Eğer kavanoz kurallara uymuyorsa, çalıştırılabilir bir kavanoz değildir.

Yorumlar (2)