2015-08-10 23 views
6

Java programının JAR dosyasına paketlenmesi gerekir, böylece java -jar komutu kullanılarak çalıştırılabilir. Öyleyse neden java -jar javac komutu ile javac'u çalıştırmam gerekmiyor? Sun/Oracle java programını nasıl çalıştırılabilir ikili dosya haline getirdi?Java'da javac yazılsaydı javac'ı java olmayan bir program gibi çalıştırabilir miyim?

Kavanoz dosyasını windows yürütülebilir dosyasına dönüştürebilen araçlar olduğunu biliyorum. Ama kavanozlarımın bash betiğinin yardımı olmadan Linux/OS X'da çalıştırılmasını istiyorum.

---------- GÜNCELLEME

Gerçekten bu bağlantıyı buldum

: Javac Java yazılmış ise https://github.com/maynooth/CS210/wiki/Convert-Java-Executable-to-Linux-Executable

+2

C (çoğunlukla) yazıldığına inanıyorum.İsterseniz, Kavanozlar – MadProgrammer

+2

@MadProgrammer için yerel çalıştırılabilirlere biraz araştırma yapabilirsiniz: hayır değil. javac.exe, karşılık gelen Java sınıfını çağıran sadece ince bir sarıcıdır. VM'yi (java.exe'nin yaptığı gibi) başlatır ve ardından Java derleyicisini çağırır. –

+0

@a_horse_with_no_name Bunun için bir referansınız var mı? – MadProgrammer

cevap

4

, neden javac yürütebileceği bir olduğu gibi none-java programı?

Sorunuzun cevabı zaten Windows x64, benim yüklemesinde (

javac.exe altında burada onun cevabını aktaran soruya Why Java compiler as distributed as executable and not as JVM bytecode?

için Jon Skeet tarafından JDK 1.8 verilmiştir) boyutu yaklaşık 15K'dir. Bu tam derleyici değil. Derleyici kendisi gerçekten Java'da yazılmıştır ve javac.exe etkili bir başlatıcıdır. Bu Java ile gelen araçların birçoğu için de geçerli - bir ağrı gibi bir şey çalıştırmak zorunda olacaktır: JRE (Java Runtime Environment) hayal olduğu her şeyi anlamak için basit bir yol

java -cp path/to/javac.jar java.tools.Javac -cp path/to/your/libraries Foo.java 

Programınız ve işletim sistemi arasında bir ara katman gibi davranıyor. JRE, byte kodunu kabul eder ve java programını çalıştırır.Javac (java derleyici) java kaynak kodunuzu platform nötr bayt koduna dönüştürür (istisnalar vardır). Java, javac, jre'nin java'da yazılıp yazılmadığından emin değilim. Fakat eğer öyleyse, farklı işletim sistemlerinde (platformlar) farklı bir şekilde bağlanmaları/yüklenmeleri gerekir.

Şimdi pencerelerde kavanoz ve linux

Normalde java kod kavanoz dosyasına dönüştürülür çalıştırma geliyor. Sonra Alternatif (aynı konumda) iki (çoğunlukla kavanoz dosyası ile birlikte) kavanoz dosyasını başlatmak için dosyaları windows için bir Apache Tomcat dosyaları vardır Örneğin

linux

için bir

startup.bat ==> to start program in windows. 
startup.sh ==> to start program in linux. 

olacak Windows için jar'ı exe'ye dönüştürebilir. Linux için belirttiğiniz link yeterlidir. Komut, linux komut yorumlayıcısı tarafından yorumlanır ve jar dosyanız çalıştırılır.

Bu bağlantı, linux'ta bir kabuk komut dosyasını yürütmenin farklı yollarını belirtir. http://www.thegeekstuff.com/2010/07/execute-shell-script/

Bu bağlantıyı Özetle yarasa Run .jar from batch-file

olarak kavanoz çalıştırmak için kodu vardır, sizin kavanoz dosya platform bağımsız olabilir ama yolu kavanoz dosyası farklı platformlar için farklı olacaktır başlatın.

İlgili konular