Bir JAR dosyasından ana sınıf bildirim özniteliğini neden yükleyemedi?


85

Bu şekilde bir JAR dosyası oluşturdum jar cf jar-file input-files. Şimdi çalıştırmaya çalışıyorum. Çalıştırmak işe yaramıyor (jre komutu bulunamadı):

jre -cp app.jar MainClass

Bu da çalışmıyor:

java -jar main.jar

(Main.jar'dan Main-Class bildirim özelliği yüklenemedi).

Bunu da öğrendim

JAR dosyası olarak paketlenmiş bir uygulamayı çalıştırmak için (sürüm 1.2 - Main-Class bildirim başlığı gerektirir)

"Ana Sınıf bildirim başlığı" nedir? Nasıl yaratırım ve nereye koyarım?

Yanıtlar:


62

Semptomlarınıza inandığımdan emin değilim:

  • Eğer jrekomut bulunmazsa, o zaman çalışan jre -cp app.jaraynı hatayı vermelidir
  • Sınıf yoluna sadece bir JAR dosyası eklemek, gördüğünüz hatayı vermemelidir

Çalıştırırsanız bu hatayı görmenizi beklerim:

java -jar app.jar

Ana Sınıf üstbilgisinin JAR dosyası için bildirimde olması gerekir - bu, diğer gerekli kitaplıklar gibi şeyler hakkında meta verilerdir. Uygun bir bildirimin nasıl oluşturulacağını öğrenmek için Sun belgelerine bakın . Temel olarak, aşağıdaki gibi bir satır içeren bir metin dosyası oluşturmanız gerekir:

Main-Class: MainClass

O zaman koş

jar cfm app.jar manifest.txt *.class

Teşekkür ederim. İşe yarıyor. İle bir manifest dosyası Main-Class: MainClassoluşturdum ve ardından verdiğiniz komutla .jar dosyasını oluşturdum. Bundan sonra programımı çalıştırabildim java -jar main.jar.
Roman

1
Başka bir seçenek, ayrı bir dosyaya ihtiyaç duymadan -e seçeneğini kullanmaktır. jar cfe app.jar MainClass *.classNot: -e, JDK 6'ya eklendi.
2013'ü

35
  1. sınıf yolunu ayarlayın ve derleyin

    javac -classpath "C: \ Program Files \ Java \ jdk1.6.0_ updateVersion \ tools.jar" yourApp.java

  2. manifest.txt oluştur

    Ana Sınıf: Uygulamanızın yeni satırı

  3. yourApp.jar dosyasını oluşturun

    jar cvf0m yourApp.jar manifest.txt yourApp.class

  4. yourApp.jar dosyasını çalıştırın

    java -jar yourApp.jar


9

Aşağıdakilerle koşabilirsiniz:

java -cp .;app.jar package.MainClass

JAR dosyasında herhangi bir bildirim yoksa benim için çalışıyor.


Ben: Tanınmayan seçenek: -cp. Cevabınızı gözden geçirir misiniz? Çünkü bu komutun yapmaya çalıştığını bilmiyorum. (java -cp.; app.jar paketi.MainClass). Bu bir komut mu yoksa iki mi?
kenorb

1
docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/… "-cp.; app.jar", MainClass.main () yöntemini çalıştırabileceğinizden daha fazla, app.jar dosyanızı sınıf yoluna eklemelidir ( MainClass "paket" paketindedir).
Dainius

1
Yani muhtemelen Linux'ta bu seçenek (-cp) mevcut değildir (benimki java v1.6.0_24, OpenJDK Runtime Environment (IcedTea6 1.11.3) (6b24-1.11.3-1ubuntu0.12.04.1)).
kenorb

java -version => Java HotSpot (TM) 64-Bit Sunucu VM (derleme 20.1-b02, karma mod) "java -cp. test1.Main" çalışır
Dainius

/ usr / lib / jvm / java-6-openjdk-amd64 / bin / java -version => OpenJDK 64-Bit Sunucu VM (derleme 20.0-b12, karma mod) "/ usr / lib / jvm / java-6-openjdk -amd64 / bin / java -cp. test1.Main "çalışır
Dainius

6

Bu hatayı aldım ve bunun nedeni argümanları yanlış sıraya koymuş olmamdı:

DOĞRU

java maui.main.Examples tagging -jar maui-1.0.jar 

YANLIŞ

java -jar maui-1.0.jar maui.main.Examples tagging 

1
Bu sadece bir BSD sorunu olabilir, eminim ki son zamanlarda başka şekilde de yaptım.
Sridhar Sarnobat

1

Çalıştırılabilir JAR dosyasını uygun manifest dosyasıyla doğru bir şekilde oluşturduğunuzdan emin olmanın en kolay yolu, Eclipse'i kullanarak onu sizin için oluşturmaktır. Eclipse projenizde, temel olarak menüden Dosya / Dışa Aktar'ı seçmeniz ve komutları izlemeniz yeterlidir.

Bu şekilde, JAR dosyanızın doğru olduğundan ve hala bir sorun varsa başka bir yere bakmanız gerektiğini bildiğinizden emin olabilirsiniz. İşlem, SSS bölümünde tam olarak açıklanmıştır. Bağımsız bir SWT programı için çalıştırılabilir bir JAR dosyasını nasıl oluştururum? .


ExportEclipse IDE'deki için teşekkürler .
Ninh Pham

1

Deneyin

java -cp .:mail-1.4.1.jar JavaxMailHTML 

manifestdosyaya gerek yok .


0

NetBeans'te de bu hatayı yaşadığımı keşfettim. Umarım aşağıdakiler yardımcı olur.

  1. Proje Yapılandırmasına gittiğinizde, çalıştırmayı düşündüğünüz ana sınıfı ayarladığınızdan emin olun.
  2. Derleme veya Temiz Derleme Yapın
  3. Jar dosyasını istediğiniz yere yerleştirin ve komut satırında java -jar "Projeniz.jar" ı tekrar deneyin.

Karşılaştığım sorun buydu çünkü NetBeans'te kullandığım başka "test" programlarım vardı ve Proje yapılandırmasının Çalıştır kısmındaki Ana Sınıfın doğru ayarlandığından emin olmam gerekiyordu.

birçok nimet, John P


0

Çalıştırdığımda da aynı hatayı alıyordum :
jar cvfm test.jar Test.class Manifest.txt

Sorunu çözen şuydu :
jar cvfm test.jar Manifest.txt Test.class

Bildirim, oracle belgelerinde verildiği gibi giriş noktasına sahip (dosyanın sonunda yeni bir satır karakteri olduğundan emin olun):
Ana Sınıf: Test


0

Ben de aynı problemle karşılaştım. Bu unix komutu ana sınıfı bulamaz. Bunun nedeni, çalışma zamanı ve derleme zamanı JDK sürümlerinin farklı olmasıdır. Java derleyici sürümünü değiştirdikten sonra kavanozu tutulmadan geçirin. Aşağıdaki bağlantı bana yardımcı oldu.

http://crunchify.com/exception-in-thread-main-java-lang-unsupportedclassversionerror-comcrunchifymain-unsupported-major-minor-version-51-0/

Bu adımdan sonra oluşturulan kavanozu çalıştırmayı deneyin ve ardından çalıştırın


0

Sınıf yolunuz bildiride tam olarak belirtilmişse, belki java çalışma zamanı ortamının son sürümüne ihtiyacınız vardır . JRE 8'i yeniden yüklediğimde sorunum çözüldü.


0

Tutulma kullanıyorsanız, aşağıdakileri deneyin: 1. Projeye sağ tıklayın -> Dışa Aktar'ı seçin 2. Dışa aktarma hedefi seçin içinde Çalıştırılabilir Jar dosyasını seçin 3. Kavanozun adını girin ve "Paket gerekli ..." seçeneğini seçin (ikinci radyo düğmesi) -> Bitir

Bu yardımcı olur umarım...!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.