Bir Java programını Windows'taki komut satırından nasıl çalıştırabilirim?


216

Windows'ta komut satırından bir Java programı yürütmeye çalışıyorum. İşte benim kod:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class CopyFile
{
    public static void main(String[] args)
    {

        InputStream inStream = null;
        OutputStream outStream = null;

        try
        {

            File afile = new File("input.txt");
            File bfile = new File("inputCopy.txt");

            inStream = new FileInputStream(afile);
            outStream = new FileOutputStream(bfile);

            byte[] buffer = new byte[1024];

            int length;
            // copy the file content in bytes
            while ((length = inStream.read(buffer)) > 0)
            {

                outStream.write(buffer, 0, length);

            }

            inStream.close();
            outStream.close();

            System.out.println("File is copied successful!");

        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}

Programı nasıl çalıştıracağımdan emin değilim - herhangi bir yardım? Bu Windows'ta mümkün mü? Neden başka bir ortamdan farklı (JVM'nin bir kez yazdığını, herhangi bir yerde çalıştığını düşündüm)?


33
javac CopyFile.javave sonrajava CopyFile
alfasin

Şimdi komut satırındayım, txt dosyalarımı çağrılmaları için programla aynı klasöre kaydetmem gerekiyor mu?
Elizabeth Turner

Pakette ne CopyFilevar
MadProgrammer

1
@ Elizabeth Turner önce JRE'yi (Java Runtime Env) yüklediğinizden ve her klasörden erişilebilir olduğundan emin olmalısınız (Java / Javac yolu PATH env değişkenine dahil edilmiştir). Sonra yukarıda yazdığım komutları CopyFile.java'nın bulunduğu klasörden çalıştırın.
alfasin

Yanıtlar:


240

Kaynak: javaindos.

Diyelim ki dosyanız C: \ mywork \

Komut İstemini Çalıştır

C:\> cd \mywork

Bu, C: \ mywork'ü geçerli dizin yapar.

C:\mywork> dir

Bu, dizin içeriğini görüntüler. Dosyalar arasında filenamehere.java dosyasını görmelisiniz.

C:\mywork> set path=%path%;C:\Program Files\Java\jdk1.5.0_09\bin

Bu sisteme JDK programlarını nerede bulacağını söyler.

C:\mywork> javac filenamehere.java

Bu derleyici olan javac.exe dosyasını çalıştırır. Bir sonraki sistem isteminden başka bir şey görmemelisiniz ...

C:\mywork> dir

javac filenamehere.class dosyasını yarattı. Dosyalar arasında filenamehere.java ve filenamehere.class dosyalarını görmelisiniz.

C:\mywork> java filenamehere

Bu, Java yorumlayıcısını çalıştırır. Daha sonra program çıktısını görmelisiniz.

Sistem javac'ı bulamazsa, yol ayar komutunu kontrol edin. Javac çalışıyor ancak hata alıyorsanız, Java metninizi kontrol edin. Program derlenir, ancak bir istisna alırsanız, dosya adında ve sınıf adında ve java HelloWorld komutunda yazım ve büyük harf kullanımını denetleyin. Java büyük / küçük harfe duyarlıdır!


27
Sorun ben im derleyici çalıştırmak için çalıştığımda bir hata alıyorum "ana sınıfı bulunamadı veya yükleyemiyor CopyFile
Elizabeth Turner

2
CopyFile.class içeren klasörü geçerli dizin olarak ayarladıysanız, "java -cp. CopyFile" Aksi takdirde "java -cp FULLPATH CopyFile"
Nicholas Kadaeux

Kodu derleyen ve çalıştıran bir toplu iş dosyasını nasıl oluştururum, ancak daha önce derlenmişse, sadece başlat?
android geliştirici

2
Ne eksik: sınıf belirli bir pakette olduğu bildirildiyse, .classdosyayı uygun dizin yapısına koymanız gerekir . Geçerli dizin varsayılan sınıfyoludur, bu nedenle -cp .el ile ayarlamanız gerekmez .
Artur Czajka

2
Elbette, bir paket kullanmalısınız: package mypackage; sonra proje adınıza gidin /. Java mypackage.Ana
chrips

108

Cevabı tamamlamak için:

  1. Java Dosyası

    TheJavaFile.java
  2. Java Dosyasını * .class dosyasına derleyin

    javac TheJavaFile.java
    • Bu bir TheJavaFile.classdosya oluşturur
  3. Java Dosyasının Yürütülmesi

    java TheJavaFile
  4. Yürütülebilir bir *.jardosya oluşturma

    • Burada iki seçeneğiniz var -

      1. Harici bildirim dosyasıyla:

        • Manifest dosyasını oluştur - MANIFEST.mf

        • MANIFEST dosyası Main Class'ın açık bir girişinden başka bir şey değildir

        • jar -cvfm TheJavaFile.jar MANIFEST.mf TheJavaFile.class

      2. Giriş Noktası ile yürütülebilir:

        • jar -cvfe TheJavaFile.jar <MainClass> TheJavaFile.class
  5. Jar Dosyasını çalıştırmak için

    java -jar TheJavaFile.jar

5
MANIFEST.mf içeriğini gösterebilir misiniz, çünkü "Giriş Noktası ile Yürütülebilir" denediğimde ana sınıfın bulunamadığını söylüyor
Pini Cheyni

@Pini Cheyni Sınıfınız MainClass olarak adlandırılırsa, manifest dosyanız Main-Class için bir girişe sahip olacaktır: MainClass
jkhosla

@PiniCheyni, Yürütülebilir kavanoz oluşturmanın 2 yolu burada iyi açıklanmıştır. docs.oracle.com/javase/tutorial/deployment/jar/appman.html
Dinesh Kumar P

3. noktada, java TheJavaFilebu eşdeğer thats çağırdığınızda java TheJavaFile.class.. böylece java dosyasını belirttiğiniz gibi yürütmüyorsunuz. sınıf dosyasını yürütüyorsunuz. java dosyaları yürütülebilir olmayan kaynaklardır
user2914191

21

Java sınıfınızın bir paket içinde olması durumunda. Adlı Java sınıfı varsayalım ABC.javamevcuttur com.hello.programs, o zaman paket adıyla çalıştırmak gerekir.

Her zamanki gibi derleyin:

C:\SimpleJavaProject\src\com\hello\programs > javac ABC.java

Ancak çalıştırmak için paket adını ve ardından java sınıfı adınızı vermeniz gerekir:

C:\SimpleJavaProject\src > java com.hello.programs.ABC

19

Bir sınıf oluşturmak için bir Java dosyasını derleyin :

javac filename.java

Oluşturulan sınıfı yürütün :

java filename

"Dosya adınızın" aslında bir sınıf adı olduğuna dikkat edin. Java.exe, her * .jar dosyasında bu adın bir sınıfını arar.
Doomjunky

@Doomjunky Açıklayabilir misiniz lütfen? Kötü mü iyi mi? Farklı adlandırılmalı mı?
David Ferenczy Rogožan

9

Kolay. Dosyanızı A.text olarak kaydettiyseniz, yapmanız gereken ilk şey A.java olarak kaydetmek. Şimdi bir Java dosyası.

Şimdi cmd'yi açmanız ve derlemeden önce A.java dosyanızın yolunu ayarlamanız gerekir. bunun için başvurabilirsiniz .

Ardından, komutunuzu kullanarak dosyanızı derleyebilirsiniz.

javac A.java

Sonra kullanarak çalıştırın

java A

Böylece cmd cinsinden bir java programını derleyip çalıştırıyorsunuz. Ayrıca , Java olan bu materyali derinlemesine derslerden de geçirebilirsiniz . Java'da anlamanız gereken birçok şey yeni başlayanlar için burada.


7

Komut satırında javac kullanarak herhangi bir java kaynağını derleyebilirsiniz; örneğin, javac CopyFile.java. Çalıştırmak için: java CopyFile. Tüm java dosyalarını aynı dizinde oldukları sürece javac * .java kullanarak derleyebilirsiniz.

"Ana sınıfı bulamadı veya yükleyemedi" ile ilgili bir sorun yaşıyorsanız, yolunuzda jre olmayabilir. Şu soruya bir göz atın: Ana sınıf bulunamadı veya yüklenemedi


7

Dosyanın "CopyFile.java" olarak adlandırıldığını varsayarsak, aşağıdakileri yapın:

javac CopyFile.java
java -cp . CopyFile

İlk satır, kaynak kodu yürütülebilir bayt kodunda derler. İkinci satır, önce geçerli dizini sınıf yoluna ekleyerek yürütür (her ihtimale karşı).


3
bilgisayarım: bin user $ java -cp. Main.class Hatası: Main class bulunamadı veya yüklenemedi Main.class
chrips 13:17


4

Windows 7'de aşağıdakileri yapmak zorunda kaldım:

hızlı yol

  1. JDK'yı yükleyin http://www.oracle.com/technetwork/java/javase/downloads
  2. Windows'ta "C: \ Program Files \ Java \ jdk1.8.0_91 \ bin" (veya JDK'nın en son sürümünün kurulu olduğu her yerde) öğesine gidin, üst karakter tuşunu basılı tutun ve pencerede boş bir alana sağ tıklayın ve " komut penceresini tıklayın "ve bu size bir komut satırı ve tüm BIN araçlarına erişim sağlar. Windows sistemi PATH ortam değişkeninde "javac" varsayılan olarak değildir.
  3. Dosyanın nasıl derleneceği ile ilgili yukarıdaki yorumları izleyin ("javac MyFile.java" sonra "java MyFile") https://stackoverflow.com/a/33149828/194872

uzun yol

  1. JDK'yı yükleyin http://www.oracle.com/technetwork/java/javase/downloads/index.html
  2. Yükledikten sonra Windows PATH ortam değişkenini düzenler ve aşağıdakileri C yoluna ekler: \ ProgramData \ Oracle \ Java \ javapath. Bu klasör içinde bir avuç java yürütülebilir dosya için sembolik bağlantılar vardır ama "javac" bunlardan biri DEĞİLDİR, bu yüzden Windows komut satırından "javac" çalıştırmaya çalışırken bir hata atar.
  3. Yolu düzenledim: Denetim Masası -> Sistem -> Gelişmiş sekmesi -> "Ortam Değişkenleri ..." düğmesi -> "Yol" a kaydırın, vurgulayın ve düzenleyin -> "C: \ ProgramData \ Oracle \ Java \ javapath "java BIN klasörünün doğrudan yolunu içeren" C: \ Program Files \ Java \ jdk1.8.0_91 \ bin ".
  4. JDK yüklemenizi yükselttiğinizde bu büyük olasılıkla kesiliyor, ancak şimdi tüm komut satırı araçlarına erişiminiz var.

  5. Dosyanın nasıl derleneceği ile ilgili yukarıdaki yorumları izleyin ("javac MyFile.java" sonra "java MyFile") https://stackoverflow.com/a/33149828/194872


2

resim açıklamasını buraya girin ADIM 1: DOSYALARININ NEREDE OLDUĞU İLK KOMUT İSTEMİ AÇIN. (üst karakter tuşuna basarken sağ tıklama)
2. ADIM: SONRA YÜRÜTMEK İÇİN AŞAĞIDAKİ KOMUTLARI KULLANIN. (çalıştırılacak dosya ve sınıf adının Student.java olarak adlandırıldığını varsayalım) Örnek program resim arka planındadır.

     javac Student.java
     java Student

resim açıklamasını buraya girin


1

Java 9'dan itibaren JDK şunları içerir: jshell , bir Java REPL .

JDK 9+ bindizininin yolunuza doğru bir şekilde eklendiğini varsayarsak , şunları yapabilirsiniz:

  1. Çalıştır jshell File.java-File.java tabii ki dosyanız.
  2. mainYöntemi çağırmanıza izin veren bir istem açılır :jshell> File.main(null) .
  3. İstemi kapatmak ve JVM oturumunu sonlandırmak için /exit

JShell ile ilgili tüm belgeleri burada bulabilirsiniz .


1

Şimdi (JDK 9'dan itibaren), java'yı çalıştırmak için kullanabilirsiniz. Ana içeren "Hello.java" yürütmek için aşağıdakileri kullanabilirsiniz: java Hello.java

Artık javac kullanarak ayrı ayrı kullanarak derlemenize gerek yok.


Bu özellik JDK 11'e eklenmiştir.
Holger
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.